在使用GCC进行编译时,-DPIC的作用是什么?何时真正有必要?

我发现-fpic-fPIC将生成位置无关代码。但是我找不到关于-DPIC的任何信息。

最佳答案

这只是一个预处理器宏定义。 GCC手册说:


-D NAME

NAME预定义为宏,定义为1

-D NAME=DEFINITION

DEFINITION的内容被标记和处理,就像它们
在翻译阶段三的#define指令中出现。


如果您的源代码关心是否将其编译为与位置无关的代码,这可能会很有用。例如:

#ifdef PIC
   /* ... */
#endif

07-27 15:31