正如我在这里看到的那样(Combine static libraries)我可以使用libtool组合多个静态库
libtool -static -o new.a old1.a old2.a
据我所知,这将连接旧库和新库中的每个函数。但我真正想要的是new.a库中的函数,其他函数用于依赖目的。有没有办法只将new.a所需的部分与其他库结合起来而不带一堆不必要的代码?
答案 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
中使用的内容。