我正在发布一个多平台库,它可以在除 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/