在使用GCC进行编译时,-DPIC
的作用是什么?何时真正有必要?
我发现-fpic
和-fPIC
将生成位置无关代码。但是我找不到关于-DPIC
的任何信息。
最佳答案
这只是一个预处理器宏定义。 GCC手册说:
-D
NAME
将NAME
预定义为宏,定义为1
。
-D
NAME=DEFINITION
DEFINITION
的内容被标记和处理,就像它们
在翻译阶段三的#define
指令中出现。
如果您的源代码关心是否将其编译为与位置无关的代码,这可能会很有用。例如:
#ifdef PIC
/* ... */
#endif