如何将所有链接依赖项打包到单个Linux静态库中?

时间:2018-04-24 20:57:53

标签: c++ linux c++11 ld libtool

我正在发布一个多平台库,除了Linux之外它在任何地方都可以使用。可能有办法做我需要的,但我没有看到它,希望有人可以提供帮助。

我的库包含两个项目,Windows上的“subLibrary.lib”和“library.lib”(例如)。我建立'subLibrary'然后将其链接到'library'进行分发。消费者只需要与“图书馆”链接即可获得所有内容,包括“子图书馆”中的内容。

每个其他平台的工作原理相同 - 我发布了一个巨大的'library.a',其中包含所有内容和消费者与之链接的内容,而不必了解任何较低级别的依赖项。

在Linux上构建标准可执行文件时,我的链接命令不仅要指定'library.a',还要指定 每个 依赖项。这是因为中间库将符号保留为未解决的状态。

我想要做的是使其与其他平台相同,因此消费可执行文件只需链接'library.a',该库包含所需的一切。

我知道这会使库变大,但这是确保依赖解析和为每个人构建时间的唯一方法。

1 个答案:

答案 0 :(得分:0)

在unix上,库只是所有目标文件的集合。您可以使用AR向库中添加更多文件,但是您需要注意文件名冲突。