[英]How to detect Cross GCC compiler using Macros
我發現了這篇非常有趣的文章: C / C ++技巧:如何使用編譯器預定義的宏檢測編譯器名稱和版本
是否可以使用宏檢測當前編譯器是否為Cross GCC ( Eclipse 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.