gpt4 book ai didi

c++ - 如何在 OS/X 上的编译时确定编译标志?

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:12 27 4
gpt4 key购买 nike

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

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

最佳答案

-fPIC 是 OS X 上的默认值。gcc 4.0.1 在我笨拙的旧 OS X 10.4 机器上确实定义了 __PIC__;或者,当使用 -fno-PIC 明确关闭它时,它不会。

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

但是您可以在任何平台上使用 gcc-dM 选项查看更改预定义预处理器定义标志的效果,它会在之后转储预处理器定义预处理完成。

例如从终端窗口:

$ 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
$

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

关于c++ - 如何在 OS/X 上的编译时确定编译标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507484/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com