通俗解释Linux 动态库-fPIC的作用
🧱 什么是动态库?
你可以把“动态库”想象成一个工具箱,程序运行的时候需要用到它里面的工具(函数),但不是一开始就把它塞进程序里,而是等到需要的时候才去“借”。
比如:你写了一个程序叫 app
,它要调用一个函数 add()
,这个函数放在一个叫 libmath.so
的动态库里。程序运行时才会去加载这个 .so
文件。
🎯 那么 -fPIC
是什么?
-fPIC
是 GCC 编译器的一个选项,意思是:
“请生成与位置无关的代码(Position Independent Code)。”
换句话说:
“这段代码将来可以被加载到内存中的任何地方,都能正常运行。”
🚧 不加 -fPIC
会怎样?
如果你编译动态库时不加 -fPIC