如何使用宏检测交叉GCC编译器

How to detect Cross GCC compiler using Macros

本文关键字:GCC 编译器 检测 何使用      更新时间:2023-10-16

我发现了这篇非常有趣的文章:C/c++提示:如何使用编译器预定义宏检测编译器名称和版本

是否有可能通过使用宏来检测当前编译器是否为Cross GCC(默认使用Eclipse CDT)?

如果您正在编译例如ARM,则很容易检测,但如果您在ARM上编译ARM或在x86上交叉编译,则无法通过宏检测。

你需要在构建系统中支持这个,并将你的变量传递给编译器

gcc -DIS_CROSSCOMPILING=1

使用这个GCC转储预处理器定义了交叉编译器和系统编译器的检查输出。有很多定义,但是没有关于交叉编译的。

根据这个http://www.gnu.org/software/automake/manual/html_node/Cross_002dCompilation.htmlAutotools正在执行一些检查

checking whether we are cross compiling... yes

,我希望这个结果可以在gcc中显示。

你也可以运行一些难看的命令来检查一些交叉编译

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

如果交叉编译到不同的体系结构,这个命令会失败,但是如果只是针对不同的操作系统,这个命令不会失败。

是的。#if定义(GNUC)可能是你正在寻找的编译器。如果希望查看是否使用了特定目标,那么可能会有另一个硬件宏。https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html