C++ 如何将所有链接依赖项打包到单个Linux静态库中?
我正在发布一个多平台库,它在除Linux之外的任何地方都能正常工作。也许有一种方法可以满足我的需要,但我没有看到,也不希望这里有人能帮我 我的库由两个项目组成,例如Windows上的“subLibrary.lib”和“library.lib”。我建立“子库”,然后将其链接到“库”中进行分发。消费者只需与“图书馆”链接即可获得一切,包括“子图书馆”中的内容 其他所有平台的工作原理都是一样的——我发布了一个巨大的“library.a”,其中包含所有内容,消费者与之链接,不必知道任何较低级别的依赖关系 在Linux上构建标准可执行文件时,我的link命令不仅必须指定“library.a”,还必须指定它的每个依赖项。这是因为中间库将符号保留到以后才能解析 我想做的是使其与其他平台相同,这样使用的可执行文件只需与“library.a”链接,并且该库包含它所需的所有内容C++ 如何将所有链接依赖项打包到单个Linux静态库中?,c++,linux,c++11,ld,libtool,C++,Linux,C++11,Ld,Libtool,我正在发布一个多平台库,它在除Linux之外的任何地方都能正常工作。也许有一种方法可以满足我的需要,但我没有看到,也不希望这里有人能帮我 我的库由两个项目组成,例如Windows上的“subLibrary.lib”和“library.lib”。我建立“子库”,然后将其链接到“库”中进行分发。消费者只需与“图书馆”链接即可获得一切,包括“子图书馆”中的内容 其他所有平台的工作原理都是一样的——我发布了一个巨大的“library.a”,其中包含所有内容,消费者与之链接,不必知道任何较低级别的依赖关系
我知道这会使库变得更大,但这是确保每个人的依赖项解析和构建时间的唯一方法。在unix上,库只是所有对象文件的集合。您可以使用AR向库中添加更多文件,但需要注意文件名冲突。在Windows和Linux上,您都无法将静态库链接到另一个静态库。您可以使用
ar
工具或类似工具来构造两个库的串联,但这不是链接。有关Windows上的类似工具,请参阅和