簡體   English   中英

-mimplicit-it 編譯器標志無法識別

[英]-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-itassembler 的一個選項,而不是編譯器。 因此,如果您的 makefile 中沒有特定的匯編程序標志(您可能沒有,因為您似乎沒有使用單獨的匯編程序步驟),您需要對編譯器使用-Wa選項傳遞它,即-Wa,-mimplicit-it=thumb

問題的根源幾乎可以肯定是一些內聯程序集——可能來自頭文件中的靜態內聯,如果你真的只是鏈接預建庫——它包含有條件執行的指令(我猜它像cmpxchg實現)。 由於您的工具鏈可以很好地配置為編譯為 Thumb 指令集 - 這需要一個前面的it (If-Then) 指令來設置條件指令- 默認情況下,另一種選擇可能是使用-marm編譯(和/或刪除-mthumb如果合適)並通過根本不使用 Thumb 來回避問題。

添加編譯器選項:

-wa

應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM