gcc -DPIC 有什么作用?

Cod*_*how 4 gcc

-DPIC使用 GCC 编译时到底做了什么,什么时候真的有必要?

我发现了这一点,-fpic并将-fPIC生成位置无关代码。但我找不到任何关于-DPIC.

Tob*_*ght 6

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

-D NAME

预定义NAME为宏,定义为1.

-D NAME=DEFINITION

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

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

#ifdef PIC
   /* ... */
#endif
Run Code Online (Sandbox Code Playgroud)