关于静态链接库的问题
总结静态链接库中的链接顺序问题
我们知道静态库实际上是一个归档文件,其通过ar
命令获得。这个归档文件中包含了*.o文件。并且链接器处理静态库时的顺序是从命令的右侧到左侧。
实际上链接器对于静态链接的处理是:从后向前扫描用户提供的静态库,然后在.o中寻找是否有需要的函数信息,如果没有则会去处理下一个.o文件。
所以我们需要将被依赖的静态库放在命令的后面,将存在依赖的静态库放在前面:
1 |
|
如果静态库少的时候我们可以通过它们的依赖关系来确定谁先谁后,但是一旦静态库过多,我们就很难知道它们之间的依赖关系。此时可以通过将它们都引用两次:
1 |
|
但是这种方法过于麻烦,所以gcc
提供了简便方法:
1 |
|
关于静态链接库的问题
https://ysc2.github.io/ysc2.github.io/2024/01/02/关于静态链接库的问题/