可以将库链接到一个库中,并解析内部函数调用吗?

时间:2016-07-25 09:08:56

标签: linker g++

我正在开发一个拥有数百种可执行文件的系统。每个可执行文件都静态链接到各种.a库中。共享库现在不是一个选项。完全重建非常缓慢。瓶颈似乎是连接的,因为每个可执行文件都必须重新链接,并且有数百个。

是否可以在解析内部函数调用的所有库中创建“主”库,然后在链接二进制文件时使用此主库?由于内部库调用已经解决,因此可以节省时间。 (图书馆之间有很多电话)。

我们不使用clang,我不相信增量链接是一种选择。

1 个答案:

答案 0 :(得分:2)

  

是否可以创建一个" master"文库

当然:ld -r -o master.o --whole-archive libfoo.a libbar.a ...应该这样做。

每个二进制文件很可能会变大(explanation)。

此外,如果您使用的是ELF,则使用(新)Gold linker可能会显着提高链接速度。

最后,如果您正在构建具有大量RAM的强大计算机(正如您所希望的那样),那么运行make -j12甚至更高版本可以通过并行执行多个链接来大大加快速度。这需要正确的Makefile结构和正确的依赖关系(无论如何