c++ - 有没有更好的方法来组合静态库而不携带一堆不必要的代码?

标签 c++ static-libraries libtool

正如我在这里看到的( Combine static libraries ),我可以使用 libtool 组合多个静态库

libtool -static -o new.a old1.a old2.a

据我所知,这会将旧库中的每个函数连接到新库中。但我真正想要的是 new.a 库中的函数,其他函数用于依赖目的。有没有办法只组合其他库中 new.a 所需的部分,而不携带一堆不必要的代码?

最佳答案

您可以从旧库中提取您希望合并到新库中的目标文件。但其实担心这个并没有什么意义。链接器只会链接那些必需的目标文件,这与共享库不同,在共享库中,共享库中定义的所有符号都可供可执行文件使用(通常不是它全部使用它们)。

完成这项工作的老式方法是:

mkdir new
cd new
ar x ../old1.a
ar x ../old2.a
ar rv ../new.a *.o
cd ..
rm -fr new

在两次 x 操作之后,您可以清理和削减目标文件,以保留您想要在 new.a 中使用的内容。

关于c++ - 有没有更好的方法来组合静态库而不携带一堆不必要的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367107/

相关文章:

C++14:具有通用 std::function 作为类成员的通用 lambda

c++ - 使用自动成员函数调试符号错误的解决方法?

c++ - 带有旧 Qt 的新 WebKit。值得一试吗?

c++ - 公开MP瓶颈问题

c++ - libtool:i686-pc-mingw32 共享中不允许使用 undefined symbol

具有静态库的 iOS 应用程序总是在启动 Ad Hoc 存档构建时崩溃。无法在 Xcode 调试器中重现

xcodebuild 不创建 x86_64 二进制文件

将静态库转换为共享库?

gcc - 为什么要使用 libtool 来构建库?

c - Libtool 为对象添加前缀,但 gcov 要求它们没有前缀