在谷歌上有很多类似于我的问题,我试过所有的问题,但都没有成功,所以我不得不发布这个问题。
我正在尝试使用Valgrind来检测一些二进制文件上的内存泄漏,这些二进制文件是为我的设备编译的(使用处理器: ARM926EJ-S rev 5 (v5l))。
因此,我正在尝试使用设备的特定工具链交叉编译Val差龙。
下面是我的过程:我使用Valearch3.13.0和Ubuntu 16
1/ cd Valgrind-3.13.0
2/ sed "s/armv7/arm/g" configure (这样它就不会抱怨不受支持的架构师)。
3/ ./configure --host=arm-none-linux-gnueabi (使用我的特定交叉编译器而不是默认的Linux)
4/ make
弹出以下错误:
error: bad value (cortex-a8) for -mcpu= switch=>由于我的设备使用ARM926EJ-S处理器,所以我将cortex-a8替换为Valgrin-3.13.0文件夹中所有文件的arm926ej-s。
再次运行上述步骤,将弹出另一个错误:
m_dispatch/dispatch-arm-linux.S: Assembler messages:
m_dispatch/dispatch-arm-linux.S:104: Error: selected processor does not support `movw r1,#47'
m_dispatch/dispatch-arm-linux.S:105: Error: selected processor does not support `movw r2,#0'
m_dispatch/dispatch-arm-linux.S:157: Error: selected processor does not support `movw r1,#:lower16:vgPlain_stats__n_xindirs_32'
m_dispatch/dispatch-arm-linux.S:158: Error: selected processor does not support `movt r1,#:upper16:vgPlain_stats__n_xindirs_32'
m_dispatch/dispatch-arm-linux.S:165: Error: selected processor does not support `movw r1,#(((1<<15))-1)'
m_dispatch/dispatch-arm-linux.S:166: Error: selected processor does not support `movw r4,#:lower16:vgPlain_tt_fast'
m_dispatch/dispatch-arm-linux.S:169: Error: selected processor does not support `movt r4,#:upper16:vgPlain_tt_fast'
m_dispatch/dispatch-arm-linux.S:182: Error: selected processor does not support `movw r1,#:lower16:vgPlain_stats__n_xindir_misses_32'
m_dispatch/dispatch-arm-linux.S:183: Error: selected processor does not support `movt r1,#:upper16:vgPlain_stats__n_xindir_misses_32'
Makefile:3224: recipe for target 'm_dispatch/libcoregrind_arm_linux_a-dispatch-arm-linux.o' failed我做错了什么?
发布于 2017-11-23 14:19:25
ARM9使用旧的ARMv5指令集。从错误消息来看,它看起来就像瓦伦的汇编代码需要一个比你的处理器更新的ARM (ARMv7)指令集。
因此,您可能运气不佳,需要将上面的汇编程序移植到ARMv4,以使其能够正常工作。
https://stackoverflow.com/questions/47426961
复制相似问题