-mimplicit-it编译器标志无法识别

时间:2016-03-14 19:30:04

标签: c++ arm tbb tegra

我正在尝试为Tegra TK1编译C ++库。该库链接到TBB,我使用包管理器提取。在编译期间,我收到以下错误

/tmp/cc4iLbKz.s: Assembler messages:
/tmp/cc4iLbKz.s:9541: Error: thumb conditional instruction should be in IT block -- `strexeq r2,r3,[r4]'

一些谷歌搜索和this question让我尝试将-mimplicit-it=thumb添加到CMAKE_CXX_FLAGS,但编译器没有识别它。

我正在使用kernal 3.10.40-grinch-21.3.4编译tegra,并使用gcc 4.8.4编译器(这就是当我输入c ++ -v时返回的内容)

我不确定初始错误消息的含义,但我认为它与TBB链接库有关,而不是我编译的源代码。修复的问题也很神秘。任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:4)

-mimplicit-itan option to the assembler,而不是编译器。因此,如果您的makefile中没有特定的汇编程序标志(您可能没有,因为您似乎没有使用单独的汇编程序步骤),您需要使用{ {3}}传递它,即-Wa,-mimplicit-it=thumb

问题的根源几乎可以肯定是一些内联汇编 - 如果您真的只链接预先构建的库 - 可能来自头文件中的静态内联 - 它包含有条件执行的指令(I' m猜测它是cmpxchg实现的东西。由于您的工具链可以配置为编译到Thumb指令集 - the -Wa option to the compiler - 默认情况下,另一种替代方法可能是使用-marm编译(和/或删除-mthumb,如果合适)并且根本不使用Thumb来回避这个问题。

答案 1 :(得分:-1)

添加编译器选项:

<强> -Wa

应该解决问题。