我有大约 50 个不同的静态库链接到我的 c++ 项目中,链接平均需要 70 秒。
我发现这次库的链接顺序发生了变化。这是可以预料的,我猜如果链接器不必在它建立的整个符号表中继续搜索一组符号。
我想我可以使用“nm”来获取静态库之间的依赖关系图。但是,这只会给我一个“正确”的链接顺序。获得最快链接顺序涉及哪些因素?
我觉得它与上述依赖关系图有关,方法是通过遍历尝试最小化一些数量,但我真的不确定是哪个。
任何帮助,将不胜感激。
我主要使用 intel 编译器和 gcc 编译器。当我用 top 检查它时,它们似乎都在使用 GNU ld 链接器。希望这可以帮助...
因此,为了进一步澄清我要问的问题,我已经知道如何从一组静态库中获得 1-pass ordering。我自己编写了这个脚本,但正如奥拉夫在下面的回答所暗示的那样,有众所周知的工具可以做到这一点。
我的问题是,我已经有两个 1-pass 链接排序,其中一个在 ~85 秒内运行,另一个在 ~70 秒内运行。很明显,我们仍然可以在 1-pass 订单中进行更多优化。