gpt4 book ai didi

linux - 如何将两个 "ar"静态库合并为一个?

转载 作者:IT老高 更新时间:2023-10-28 12:25:33 30 4
gpt4 key购买 nike

我有 2 个静态 Linux 库,由 ar crlibabc.alibxyz.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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com