正如我在这里看到的( 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/