我正在尝试使用Linaro 12.11在ODROID X2板上为ARM构建一个C ++程序。在编译过程中,我发现了这种类型的错误,我无法找到答案:
/tmp/ccsPcPGU.s:汇编程序消息:
/tmp/ccsPcPGU.s:5488:错误:所选处理器不支持Thumb模式`swp r3,sl,[fp]'
我甚至不记得在这里使用Thumb模式。有什么建议我怎么解决这个问题?
更新:
@auselen这是我为gcc -v
得到的:
root@linaro-ubuntu-desktop:/# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16 --with-mode=thumb --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
当我尝试使用gcc -c
编译每个项目构造函数文件时仍然遇到同样的问题,所以我将相信我的arm-linux-gnueabihf
存在问题。
答案 0 :(得分:1)
Thumb指令集中不存在SWP / SWPB指令。
如果Linaro 12.11工具链默认为Thumb,则可能在汇编代码中缺少(或具有不正确的)指令状态指令。
根据导致错误的原因(C中包含的内联asm语句或已预处理的.S文件),项目的全部或部分内容需要构建为ARM指令。
答案 1 :(得分:0)
似乎罪魁祸首是include/refmem/atomic.h
并且更新编译器应该修复它:https://github.com/cmyth/cmyth/issues/11
编辑:根据this bug entry,此修复程序在libgc(1:6.8-1.2ubuntu2)中可用。