Gcc 使用-fPIC和-s-可能相互矛盾?

Gcc 使用-fPIC和-s-可能相互矛盾?,gcc,aslr,fpic,Gcc,Aslr,Fpic,在一个特定的项目中,我看到同时使用了以下编译器选项: gcc foo.c -o foo.o -Icomponent1/subcomponent1 -Icomponent2/subcomponent1 -Wall -fPIC -s 此处一起使用的-fPIC和-s是否相互矛盾?如果没有,原因是什么?-s和-fPIC是用于不同目的的两个标志。它们并不矛盾 从 - 从可执行文件中删除所有符号表和重定位信息 -fPIC 如果目标机器支持,则发出与位置无关的代码,适用于动态链接并避免对全局偏移表大小的任何

在一个特定的项目中,我看到同时使用了以下编译器选项:

gcc foo.c -o foo.o -Icomponent1/subcomponent1 -Icomponent2/subcomponent1 -Wall -fPIC -s

此处一起使用的
-fPIC
-s
是否相互矛盾?如果没有,原因是什么?

-s
-fPIC
是用于不同目的的两个标志。它们并不矛盾

- 从可执行文件中删除所有符号表和重定位信息

-fPIC 如果目标机器支持,则发出与位置无关的代码,适用于动态链接并避免对全局偏移表大小的任何限制。此选项使m68k、PowerPC和SPARC有所不同


-s
做什么?它似乎没有记录。@ams,为什么,它在gcc手册页中<代码>-s从二进制文件中剥离重新定位部分。它不在我的GCC手册页上。我确实在链接器手册页上看到了这一点,它可能确实被传递了。