作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有 2 个静态 Linux 库,由 ar cr
、libabc.a
和 libxyz.a
创建。
我想将它们合并到一个静态库 libaz.a
.
我该怎么做。
我想创建一个合并的静态库,而不是将两个库都提供给应用程序的最终链接。
最佳答案
至少有三种方式原生。第一种也是最便携的方法是使用 libtool。在也使用 libtool 构建了其他库之后,您可以通过将 .la 库添加到 automake libaz_la_LIBADD 变量来组合它们,或者直接从 Makefile 中添加类似的内容:
libtool --mode=link cc -static -o libaz.la libabc.la libxyz.la
其他两个至少在使用 GNU ar 时可用。您可以使用 MRI 脚本(例如命名为 libaz.mri),例如:
create libaz.a
addlib libabc.a
addlib libxyz.a
save
end
然后执行ar为:
ar -M <libaz.mri
或者您可以使用 thin 存档(选项 -T
),这将允许添加其他存档而不将它们嵌套在其中,尽管缺点是如果您愿意分发静态库,分离的对象将丢失:
ar -rcT libaz.a libabc.a libxyz.a
上述所有方法都可以优雅地处理原始文件中重叠的成员名称。
否则,您必须解压到不同的目录并重新打包,以避免替换重叠的成员名称:
mkdir abc; cd abc; ar -x ../libabc.a
mkdir xyz; cd xyz; ar -x ../libxyz.a
ar -qc libaz.a abc xyz
关于linux - 如何将两个 "ar"静态库合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821916/
我是一名优秀的程序员,十分优秀!