如何在OS / X上编译时确定编译标志?

时间:2011-03-31 23:12:32

标签: c++ macos gcc

如果我使用gcc 4.1在x86 Linux上使用-fPIC进行编译,那么定义__PIC__将设置为1,预处理器可以在编译时对其进行操作。但是,在gcc 4.01下的OS / X上并非如此。是否有其他方法可以在OS / X上的编译时确定-fPIC的设置?

在OS / X下在预处理器级别查询编译标志的一般工具会更有帮助,但我找不到类似的东西。

1 个答案:

答案 0 :(得分:1)

-fPIC是OS X上的默认设置。在我的狡猾的旧OS X 10.4机器上的gcc 4.0.1确实定义了__PIC__;或者,当它与-fno-PIC明确关闭时,它不会。

编译标志的设置通常不会导出到预处理器,但某些特殊情况除外,这些特殊情况可能因不同的GCC目标而异。

但是您可以使用-dM选项gcc来查看在任何平台上更改标志对预定义预处理程序定义的影响,$ gcc -xc++ -dM -E /dev/null | sort > /tmp/defaults.txt $ gcc -fno-PIC -xc++ -dM -E /dev/null | sort > /tmp/nopic.txt $ diff /tmp/defaults.txt /tmp/nopic.txt 65d64 < #define __PIC__ 1 $ 选项在预处理完成后转储预处理程序定义。

e.g。从终端窗口:

-xc++

(我在那里指定了/dev/null因为我正在预处理-xc而不是带有指示语言变体的扩展名的文件。也可能是-xobjective-c,{{1 }或-xobjective-c++。)