Valgrind为ARMv5tel交叉编译

我使用以下选项运行configure:
./configure --target=armv5tel CC=arm-linux-gnueabi-gcc --host=i686-linux

然后跑了make

我遇到以下错误

m_cpuid.S: Assembler messages:
m_cpuid.S:40: Error: bad instruction `pushl %ebp'
m_cpuid.S:41: Error: bad instruction `movl %esp,%ebp'
m_cpuid.S:42: Error: bad instruction `pushl %ecx'
m_cpuid.S:43: Error: bad instruction `pushfl'
m_cpuid.S:44: Error: bad instruction `pushfl'
m_cpuid.S:45: Error: bad instruction `popl %eax'
m_cpuid.S:46: Error: bad instruction `movl %eax,%ecx'
m_cpuid.S:47: Error: bad instruction `xorl $0x200000,%eax'
m_cpuid.S:48: Error: bad instruction `pushl %eax'
m_cpuid.S:49: Error: bad instruction `popfl'
m_cpuid.S:50: Error: bad instruction `pushfl'
m_cpuid.S:51: Error: bad instruction `popl %eax'
m_cpuid.S:52: Error: bad instruction `popfl'
m_cpuid.S:53: Error: bad instruction `xorl %ecx,%eax'
m_cpuid.S:54: Error: bad instruction `andl $0x200000,%eax'
m_cpuid.S:55: Error: bad instruction `shrl $21,%eax'
m_cpuid.S:56: Error: bad instruction `popl %ecx'
m_cpuid.S:57: Error: bad instruction `movl %ebp,%esp'
m_cpuid.S:58: Error: bad instruction `popl %ebp'
m_cpuid.S:59: Error: bad instruction `ret'
m_cpuid.S:76: Error: bad instruction `pushl %ebp'
m_cpuid.S:77: Error: bad instruction `movl %esp,%ebp'
m_cpuid.S:78: Error: bad instruction `pushl %eax'
m_cpuid.S:79: Error: bad instruction `pushl %ebx'
m_cpuid.S:80: Error: bad instruction `pushl %ecx'
m_cpuid.S:81: Error: bad instruction `pushl %edx'
m_cpuid.S:82: Error: bad instruction `pushl %esi'
m_cpuid.S:83: Error: bad instruction `movl 8(%ebp),%eax'
m_cpuid.S:84: Error: bad instruction `cpuid'
m_cpuid.S:85: Error: bad instruction `movl 12(%ebp),%esi'
m_cpuid.S:86: Error: bad instruction `testl %esi,%esi'
m_cpuid.S:87: Error: bad instruction `jz 1f'
m_cpuid.S:88: Error: bad instruction `movl %eax,(%esi)'
m_cpuid.S:90: Error: bad instruction `movl 16(%ebp),%esi'
m_cpuid.S:91: Error: bad instruction `testl %esi,%esi'
m_cpuid.S:92: Error: bad instruction `jz 2f'
m_cpuid.S:93: Error: bad instruction `movl %ebx,(%esi)'
m_cpuid.S:95: Error: bad instruction `movl 20(%ebp),%esi'
m_cpuid.S:96: Error: bad instruction `testl %esi,%esi'
m_cpuid.S:97: Error: bad instruction `jz 3f'
m_cpuid.S:98: Error: bad instruction `movl %ecx,(%esi)'
m_cpuid.S:100: Error: bad instruction `movl 24(%ebp),%esi'
m_cpuid.S:101: Error: bad instruction `testl %esi,%esi'
m_cpuid.S:102: Error: bad instruction `jz 4f'
m_cpuid.S:103: Error: bad instruction `movl %edx,(%esi)'
m_cpuid.S:105: Error: bad instruction `popl %esi'
m_cpuid.S:106: Error: bad instruction `popl %edx'
m_cpuid.S:107: Error: bad instruction `popl %ecx'
m_cpuid.S:108: Error: bad instruction `popl %ebx'
m_cpuid.S:109: Error: bad instruction `popl %eax'
m_cpuid.S:110: Error: bad instruction `movl %ebp,%esp'
m_cpuid.S:111: Error: bad instruction `popl %ebp'
m_cpuid.S:112: Error: bad instruction `ret'
m_cpuid.S:154: Error: junk at end of line,first unrecognized character is `,'
make[3]: *** [libcoregrind_x86_linux_a-m_cpuid.o] Error 1
make[3]: Leaving directory `/home/swathi/Desktop/valgrind-3.6.0/coregrind'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/swathi/Desktop/valgrind-3.6.0/coregrind'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/swathi/Desktop/valgrind-3.6.0'
make: *** [all] Error 2

我错过了什么吗?

swathi

解决方法

您的配置参数不适合交叉编译.要使用最近的autoconf进行交叉编译,您只需指定主机并让其完成剩下的工作.所以它会更像这样:

./configure –host = arm-linux-gnueabi

我还必须通过将“armv7 *”替换为“arm *”来修改配置脚本.你会看到哪里.

但是,还有另一个问题. valgrind中的ARM支持涵盖所有ARMv5指令以及v6和v7指令的选择子集.但是,这是一个很大但是,实际上RUN valgrind你必须使用能够运行ARMv7代码cpu.这意味着Cortex-A或更好.

如果您打算在ARMv5类处理器(如XScale)上运行valgrind,它将无法工作,并且目标程序将因非法操作码而出错.

伤心但真实.对我来说没有valgrind.

HTH.

相关文章

文件查找(find) 1 find 简单的说,就是实时查找指定的内容或条件。特点:最新、最快、最准确。 用法:...
非交互式添加分区 方法一 添加/deb/sdb 下的分区,其实位置为1到1000M,第二个分区位置为1001至3000M,...
编译安装httpd 1 去官网下载源码包 为避免非法软件,一定要去官网下载http://www.apache.org httpd-2.4...
gdisk用法 gdisk - InteractiveGUIDpartitiontable (GPT) manipulator GPTfdisk (akagdisk) isatext-mo...
1 一定用快捷键 这里简单的说下几个常用的快捷按键。 1.1 移动光标快捷键 Crtl + a 光标回到命令行...
bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径。如果test命令中列出的条件成立...