不能在 ARMv7 机器上交叉编译/运行 valgrind

问题描述 投票:0回答:1

全部。 我正在尝试将 PC x86_64 Fedora35 中的 valgrind 交叉编译到运行 Linux 2.6.37 的 ARMv7 (cortex-a8) 嵌入式系统。 当我编译并运行 3.20.0 版时,它说“致命:内核太旧”,尽管 Valgrind 声明任何低于 2.6.31 的内核都可以。 ChatGPT 建议使用旧版本 3.8.1,我试过了。 但使用相同参数编译失败 - 机器 armv7 无法识别。 我也试过 armv5 但结果相同。

任何帮助将不胜感激。

arm cross-compiling valgrind
1个回答
0
投票

对于那些跟随我完成这项任务的人,以下是执行此任务的方法。 为了交叉编译 Valgrind 3.20.0,我使用了以下脚本:

export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
export CCFLAGS="-mcpu=cortex-a8 -mfpu=neon"
export LDFLAGS=" -Wl,--rpath=/lib/glibc.2.23,--dynamic-linker=/lib/glibc.2.23/ld-linux-armhf.so.3"
./configure --host=armv7-linux-gnueabihyf --target=armv7-linux-gnueabihf --prefix=/opt/FS_HDVR/opt
make
make install

成功完成后,我需要运行以下命令在 Valgrind 下执行 MyApp:

export VALGRIND_LIB=/opt/libexec/valgrind; /opt/bin/valgrind MyApp

请注意,glibc 很可能(我不确定)应该对应于正在使用的交叉编译器。
无论如何,现在我可以用我的应用程序运行 Valgrind。

© www.soinside.com 2019 - 2024. All rights reserved.