簡體   English   中英

如何使用宏檢測Cross GCC編譯器

[英]How to detect Cross GCC compiler using Macros

我發現了這篇非常有趣的文章: C / C ++技巧:如何使用編譯器預定義的宏檢測編譯器名稱和版本

是否可以使用宏檢測當前編譯器是否為Cross GCCEclipse CDT缺省使用的編譯器)?

如果您正在為ARM進行編譯,則很容易檢測,但是如果是在ARM上為ARM編譯,而在x86上為cros編譯,則無法通過宏進行檢測。

您需要為此在構建系統中提供支持並將變量傳遞給編譯器

gcc -DIS_CROSSCOMPILING=1

使用此GCC轉儲預處理器定義自己檢查交叉編譯器和系統編譯器的輸出。 有很多定義,但是沒有關於交叉編譯的定義。

據此http://www.gnu.org/software/automake/manual/html_node/Cross_002dCompilation.html自動工具正在執行一些檢查

checking whether we are cross compiling... yes

我希望這個結果對於gcc來說是可見的。

您還可以運行一些難看的命令來檢查某種交叉編譯

gcc -march=native -E - < /dev/null

如果該命令是跨編譯器使用不同的體系結構,則此命令將失敗,但如果僅用於不同的操作系統,則該命令將不會失敗。

是的。 #if defined( GNUC )可能正是您要獲取的編譯器。 如果要查看是否使用了特定目標,則可能有另一個硬件宏。 https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html

暫無
暫無

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

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