[英]-mimplicit-it compiler flag not recognized
我正在嘗試為 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]'
有點谷歌搜索, 這個問題使我嘗試將-mimplicit-it=thumb
添加到 CMAKE_CXX_FLAGS,但編譯器無法識別它。
我正在使用內核 3.10.40-grinch-21.3.4 在 tegra 上編譯,並使用 gcc 4.8.4 編譯器(這是我輸入 c++ -v 時返回的內容)
我不確定最初的錯誤消息是什么意思,但我認為它與 TBB 鏈接庫而不是我正在編譯的源有關。 修復的問題也很神秘。 任何人都可以對此有所了解嗎?
-mimplicit-it
是assembler 的一個選項,而不是編譯器。 因此,如果您的 makefile 中沒有特定的匯編程序標志(您可能沒有,因為您似乎沒有使用單獨的匯編程序步驟),您需要對編譯器使用-Wa
選項傳遞它,即-Wa,-mimplicit-it=thumb
。
問題的根源幾乎可以肯定是一些內聯程序集——可能來自頭文件中的靜態內聯,如果你真的只是鏈接預建庫——它包含有條件執行的指令(我猜它像cmpxchg
實現)。 由於您的工具鏈可以很好地配置為編譯為 Thumb 指令集 - 這需要一個前面的it
(If-Then) 指令來設置條件指令- 默認情況下,另一種選擇可能是使用-marm
編譯(和/或刪除-mthumb
如果合適)並通過根本不使用 Thumb 來回避問題。
添加編譯器選項:
-wa
應該可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.