有静态库,然后有共享库.如果需要,是不是可以只拥有共享的并静态链接它们?
编译一次,-fPIC
一次没有看起来像是浪费.我不太了解汇编,但是不应该可以将可重新分配的代码转换为比重新编译所有内容更快的数量级的静态代码吗?
这部分是一个历史问题.一旦只有静态库.它们静态链接到系统编译的每个二进制文件.然而,这代表了维护噩梦等,如果修补或更改了库,则需要重新编译所有使用的包.
然后共享库来解决这些问题.现在针对您的问题,首先可以在静态链接库中进行一些重要的优化,这些优化不可能在动态库上执行,因此即使将动态库转换为静态库,它也可能效率低于静态库.代码首先静态编译.
其次,大多数现代系统无论如何都只使用共享库,因此没有太多问题,事情只编译一次,作为共享库.
稍微偏僻,无论如何仍然相关,你可能会考虑预先链接.这一步骤可以消除一些启动开销(尽管仍然不一定能达到与静态链接相同的性能),并允许动态链接库中的软件更快地启动.