c++ - 您如何将所有链接依赖项打包到一个 Linux 静态库中?

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

我正在发布一个多平台库,它可以在除 Linux 以外的任何地方运行。可能有一种方法可以满足我的需要,但我没有看到它,希望这里有人可以提供帮助。

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

所有其他平台的工作方式都相同——我发布了一个巨大的“library.a”,其中包含所有内容,消费者可以与之链接,而无需了解任何较低级别的依赖项。

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

我想做的是让它与其他平台一样,因此使用的可执行文件只需链接到“library.a”,并且该库包含它需要的一切。

我知道这会使库更大,但这是确保每个人都能解决依赖关系和构建时间的唯一方法。

最佳答案

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

关于c++ - 您如何将所有链接依赖项打包到一个 Linux 静态库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50010626/

相关文章:

c++ - 从字符串c++的开头和结尾删除标点符号

c++ - HDF5:如果 Fletcher32 校验和过滤器在数据输入时失败会怎样?

c++ - CMake编译导致错误

linux - 如何在查找中使用参数扩展?

c - UNIX 发送 CR 而不是 LF

c++ - C++ lambda 中的静态变量

c++ - 读取数字并转换为单词

c++ - 如何测量代码大小?

linux - af_packet.ko 应该自动加载吗?

c++ - 结构初始化错误 : could not convert from ‘<brace-enclosed initializer list>’ to structure