Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将所有链接依赖项打包到单个Linux静态库中?_C++_Linux_C++11_Ld_Libtool - Fatal编程技术网

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

C++ 如何将所有链接依赖项打包到单个Linux静态库中?,c++,linux,c++11,ld,libtool,C++,Linux,C++11,Ld,Libtool,我正在发布一个多平台库,它在除Linux之外的任何地方都能正常工作。也许有一种方法可以满足我的需要,但我没有看到,也不希望这里有人能帮我 我的库由两个项目组成,例如Windows上的“subLibrary.lib”和“library.lib”。我建立“子库”,然后将其链接到“库”中进行分发。消费者只需与“图书馆”链接即可获得一切,包括“子图书馆”中的内容 其他所有平台的工作原理都是一样的——我发布了一个巨大的“library.a”,其中包含所有内容,消费者与之链接,不必知道任何较低级别的依赖关系

我正在发布一个多平台库,它在除Linux之外的任何地方都能正常工作。也许有一种方法可以满足我的需要,但我没有看到,也不希望这里有人能帮我

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

其他所有平台的工作原理都是一样的——我发布了一个巨大的“library.a”,其中包含所有内容,消费者与之链接,不必知道任何较低级别的依赖关系

在Linux上构建标准可执行文件时,我的link命令不仅必须指定“library.a”,还必须指定它的每个依赖项。这是因为中间库将符号保留到以后才能解析

我想做的是使其与其他平台相同,这样使用的可执行文件只需与“library.a”链接,并且该库包含它所需的所有内容


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

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

在Windows和Linux上,您都无法将静态库链接到另一个静态库。您可以使用
ar
工具或类似工具来构造两个库的串联,但这不是链接。有关Windows上的类似工具,请参阅和