【问题标题】:How to split large .a static library?如何拆分大型 .a 静态库?
【发布时间】:2018-11-26 07:17:18
【问题描述】:

是否可以将大的.a 文件拆分为多个较小的文件?

我目前遇到.a 文件大小为多个 GiB 的问题,即使使用标志 -mcmodel=medium,GCC 也会引发错误。

【问题讨论】:

  • 你有资源吗?
  • 是的,我有消息来源。
  • 然后将它们编译成多个静态库,而不是一个巨大的。这比尝试拆分大型编译库要容易得多。
  • 将静态库细分为更小的库很容易,无需重新编译任何代码,但这并不能解决您的mcmodel 错误。编辑您的帖子,向我们展示确切的命令行和产生的错误,这可能会有所帮助。
  • 您可以从大型静态库中提取所有目标文件,然后将函数的子集打包到较小的库中。但是,您可能很难确定哪些子集在较小的库中有意义,以避免较小的库之间的递归依赖关系。我不确定这会避免您对整个库大小的问题(但我不知道它也无济于事)。

标签: c gcc linker static-libraries unix-ar


【解决方案1】:

使用 binutils 工具“ar”:

ar -x libbig.a

用于从存档中提取对象和

ar -r libsmall.a obj1.o obj2.o obj3.o

用于创建新存档。

【讨论】:

    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 2014-08-24
    • 2011-01-06
    • 1970-01-01
    • 2022-10-22
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多