做网站的公司 经营范围2017年到2018年建设的网站
在 Linux 系统中,当我们使用 GCC 编译器构建 动态共享库(Shared Library) 时,通常会看到编译选项中包含 -fPIC 或者 -fpic。
一、什么是 -fPIC?
-fPIC 是 GCC 编译器的一个选项,全称是 Position Independent Code,即“位置无关代码”。
顾名思义,这种代码不依赖于其在内存中的加载地址,可以在运行时被加载到任意地址,并且仍然可以正确执行。
与之相对的是 -fpic,它的功能也类似,但生成的代码对全局偏移表(GOT)的使用有更严格的限制,适用于某些架构下的小规模共享库。在大多数现代系统上,推荐使用 -fPIC,因为它具有更好的兼容性和可扩展性。
二、为什么需要 -fPIC?
1. 动态库的加载机制
Linux 中的动态库是在程序运行时才被加载到内存中的。操作系统通过 动态链接器(dynamic linker)<
