如果库是一个共享对象(即某个lib*.so文件)编译gcc -Wall -fPIC -O2和链接,gcc -shared那么它是一个ELF 位置无关代码共享库。
PIC 在 32 位 x86(寄存器很少)上比在 64 位 x86-64 上的成本要高一些——它有一些促进 PIC 的寻址模式
如果它是dlopen-ed 或动态链接,它是相同的(在稳定状态下)性能明智。因为在这两种情况下,真正的链接都是由动态链接器完成的(例如ld-linux.so)正弦libdl.so基本上是动态链接器的包装器。
调用时性能方面重要的是里面的代码lib*.so,如果你dlopen或者你链接它,它不会改变。
如果库是静态链接的,情况可能会略有不同lib*.a。你甚至可以编译和链接两个库和程序与链接时优化最近GCC编译能力(编译和链接用gcc -flto -Wall -O2)
阅读 Drepper 的How to Write Shared Library论文和Program Library HowTo和Levine 的 Linkers & Loaders一书。