在 GCC 中链接库的顺序应该是什么?
链接器从左到右搜索。在这样做时,它遇到了它跟踪的未解析符号。如果库解析了未解析的符号,则需要使用该库的目标文件来解析符号。
静态库之间的依赖关系以相同的方式工作。需要来自其他库的符号的库出现在解析符号的库之前。如果您有循环依赖,则必须将具有循环依赖的库括在括号中。例如,如果你有库a和b是循环依赖的-
$ g++hello.cpp-L. -( -la -lb -)
较新的链接器更智能,可以跟踪先前静态库使用的函数,从其查找表中永久丢弃那些未使用的函数。因此,如果您很早就链接了一个静态库,则该库中的方法将不再可用于稍后链接行上的静态库。