0

我正在交叉编译一个 C / C++ 应用程序,以便在运行在 VM 中的 x64 Debian Linux 系统上使用来自 Tools Github 存储库的 arm-rpi-4.9.3-linux-gnueabihf 编译器在 Raspberry Pi 4 上运行。我在使用这个应用程序时遇到了一些问题,所以我使用 GCC 8.3.0-++rpi1 在 Raspberry Pi 上从源代码构建了 Valgrind。

我使用的编译器二进制文件可以在这里下载:https ://github.com/raspberrypi/tools/tree/master/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf

如果我在 RPI 上运行 Valgrind,我会收到许多错误,其中许多表示“无效读取大小为 8”。我的理解是这在 64 位架构 (8*8 = 64) 上很典型,但在这个 32 位系统上可能会产生误导,除非应用程序正在访问 64 位数据结构。此外,在为 x64 系统构建和运行的同一个应用程序上运行 Valgrind 不会识别这些相同位置的错误,这让我认为编译工具链引入了 ABI 问题,或者 Valgrind 给出了误导性的错误指示 - - 或两者。

Valgrind 还在启动时指示:

--3451-- Arch 和 hwcaps:ARM、LittleEndian、ARMv8-neon-vfp --3451-- 页面大小:当前 4096,最大支持 4096

但是 $ uname -m 表示:arm7l,我理解它是 32 位的(绝对不是 ARMv8)。

任何人都可以就这里可能出现的问题提供任何指导吗?

谢谢!

4

0 回答 0