众所周知,当使用gcc将目标链接到一系列库时,我们需要为编译器(gcc)提供链接库的正确顺序。例如:
源文件 a.cpp 取决于libb.a,libc.a和libd.a。
库 libb.a 取决于libc.a和libd.a。
因此,编译命令应为
g++ a.cpp -o a libb.a libc.a libd.a
此外,我们不能颠倒b和c之间或b和d之间的顺序。通常,我们必须手动确定所有链接库的顺序。 当然,还有一些方法可以绕过这个问题。我们可以添加
-Wl,--start-group $(LIBRARIES_YOU_NEED) -Wl,--end-group
所以ld可以自己弄清楚顺序。但是,我想知道自己链接库的顺序。
因此,考虑到源文件所需的所有库,是否有任何自动方法对库进行排序,以便在将它们放入gcc命令行时它们之间的依赖关系是正确的?