多个静态库封装成一个库文件的三种方法
2020-06-10 本文已影响0人
车到山前必有路2021
第一种也是最可移植的方法是使用libtools。
在使用libTool构建了其他库之后,只需将.la库添加到Automake libaz_la_LIBADD变量中,或者直接从Makefile中添加以下内容,就可以将它们组合起来:
libtool --mode=link cc -static -o libnew.la libabc.la libxyz.la
第二种为MRI脚本(例如名为libnew.mri),例如:
create libnew.a
addlib libabc.a
addlib libxyz.a
save
end
然后以下列方式执行ar:
ar -M <libnew.mri
第三种可以使用存档(选项)-T),这将允许添加其他档案,而不必将它们嵌套在内部,但缺点是,如果您想分发静态库,则分离的对象将丢失:
ar -rcT libnew.a libabc.a libxyz.a
以上所有方法都优雅地处理了原始档案中重叠的成员名称。
否则,您必须将其解压缩到不同的目录中,然后再进行重新打包,以避免替换重叠的成员名称:
mkdir abc; cd abc; ar -x ../libabc.a
mkdir xyz; cd xyz; ar -x ../libxyz.a
ar -qc libnew.a abc xyz