多个静态库封装成一个库文件的三种方法

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

上一篇下一篇

猜你喜欢

热点阅读