是否有更好的方法来组合静态库而不携带一堆不必要的代码?

时间:2014-03-13 01:01:28

标签: c++ static-libraries libtool

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

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

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

1 个答案:

答案 0 :(得分:3)

您可以从旧库中提取要包含在新库中的对象文件。但是担心它并没有多大意义;链接器只链接那些必要的目标文件,不像共享库中共享库中定义的所有符号都可用于可执行文件(通常不是全部使用它们)。

老式的工作方式是:

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

在两次x操作之后,您可以对目标文件进行清理和删除,以保留您在new.a中使用的内容。