在一个特定的项目中,我看到一次使用了以下编译器选项:
gcc foo.c -o foo.o -Icomponent1/subcomponent1 -Icomponent2/subcomponent1 -Wall -fPIC -s
-fPIC
和-s
在这里一起使用是矛盾的吗?如果不是,为什么?
-s
并且-fPIC
是用于不同目的的两个标志。它们并不矛盾。
来自gcc 手册
-s 从可执行文件中删除所有符号表和重定位信息。
-fPIC 如果目标机器支持,发出与位置无关的代码,适用于动态链接并避免对全局偏移表大小的任何限制。此选项在 m68k、PowerPC 和 SPARC 上有所不同。