我有一小段依赖于多个静态库(a_1-a_n)的代码。我想把这些代码打包成一个静态库并提供给其他人使用。
我的静态库,我们称其为 X,编译没问题。
我创建了一个简单的示例程序,使用了 X 中的一个函数,但是当我试图将其链接到 X 时,会出现许多缺少来自 a_1 - a_n 库的符号的错误。
是否有一种方法可以创建一个新的静态库 Y,该库包含 X 和 X 所需的所有功能(从 a_1 - a_n 中选择的部分),以便我可以仅向用户分发 Y,让他们将其链接到他们的程序中?
更新:
我尝试过用 ar 将所有内容都编译到一个大型库中,但是那样会包含许多不必要的符号(所有 .o 文件大约为 700 MB,但静态链接可执行文件只有 7 MB)。是否有一种好的方法只包含实际需要的内容?
这看起来与如何将多个 C/C++ 库组合成一个库密切相关。
-r
,使用它可以将输出作为 ld 的输入。如果您只链接一次,应该会得到一个可重定位的文件,可以代替您的库。(虽然我尝试过这样做)。 - harper