在 GCC 中连接库的顺序应是什么?
链接器从左到右搜索。搜索过程中,它会遇到未解析符号并记录下来。如果某个库解析了未解析符号,则它会使用该库的对象文件来解析该符号。
静态库之间的依赖关系同样如此。需要从其他库获取符号的库排在解析该符号的库之前。如果您有循环依赖关系,您必须用括号括起具有循环依赖关系的库。例如,如果您有两个相互依赖的库 a 和 b −
$ g++ hello.cpp -L. -( -la -lb -)
较新的链接器更智能,它能跟踪前一个静态库所使用过的函数,并永久地从查找表中删除那些没有使用的函数。因而,如果在链接线中较早地链接某个静态库,则该库的方法在链接线中的后续静态库都无法使用。
广告