【问题标题】:How to add already created .a file while creating .a file如何在创建 .a 文件时添加已创建的 .a 文件
【发布时间】:2017-07-08 11:13:28
【问题描述】:

谁能告诉我如何在创建.a 时包含已经存在的.a 文件?

ar rcs libcrypt.a

我需要将libssl.alibcrypto.a 文件一起添加到libcrypt.a 文件中。你能帮我解决这个问题吗?

【问题讨论】:

  • 也许是ar rcs libcrypt.a libssl.a libcrypto.a?
  • @geza:也许不是。当您的命令运行时,它会将文件 libssl.alibcrypto.a 放入(新)libcrypt.a 存档中。这样就可以了,但是链接器会在库中查找.o 文件而不是完整的.a 文件;它不会在libcrypt.a 中找到任何符号。您必须将目标文件添加为目标文件。 (如果您愿意,您可以将源代码和其他文件存储在档案中。实际上很少有人这样做,但这最初是 ar 程序的预期用途。)

标签: static static-libraries unix-ar


【解决方案1】:

man ar告诉你如何提取 存档中的所有成员,它会告诉您如何插入成员 存档。

所以从libssl.alibcrypto.a 中提取所有成员 并将它们全部插入libcrypt.a,注意提取 在一个空目录中。

$ mkdir scrap
$ cd scrap
$ ar -x ../libssl.a
$ ar -x ../libcrypto.a
$ ar rcs ../libcrypt.a *
$ cd ..
$ rm -r scrap/

【讨论】:

  • 单行在当前目录下留下了很多碎片(提取的目标文件)。因此,使用子目录的变体更加简洁。
  • @JonathanLeffler 非常正确。没有考虑碎片。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
相关资源
最近更新 更多