我以前在 Linux 中编译共享库时使用了-fPIC
选项,但当时我对 PIC 了解不多,所以我只是把它当作约定来输入。
最近我在wiki和几个网站上读到了PIC,我想我现在理解了一般概念。但是,我发现-fPIC
不仅在编译和链接共享库时包含选项,而且在可执行文件a.out
(例如,我用 C++ 测试了一个简单的 Hello world 程序,有无-fPIC
选项,两者都运行良好,没有任何错误。
在这种情况下,我想知道-fPIC
行为上的差异是什么。我所得到的只是地址和_GLOBAL__sub_I_(sth)
检查的细微差别objdump -t
。-fPIC
另外,我很好奇在使用选项编译可执行文件时是否会有任何有害影响。
提前致谢!