C 如何拆分大型静态库?

C 如何拆分大型静态库?,c,gcc,linker,static-libraries,unix-ar,C,Gcc,Linker,Static Libraries,Unix Ar,是否有可能将大型.a文件拆分为多个较小的文件 我当前遇到了一个问题,。一个文件有多个GiB大,GCC甚至在标记为-mcmodel=medium的情况下也会引发错误。请使用binutils工具“ar”: 用于从存档中提取对象,以及 ar -r libsmall.a obj1.o obj2.o obj3.o 用于创建新存档。使用binutils工具“ar”: 用于从存档中提取对象,以及 ar -r libsmall.a obj1.o obj2.o obj3.o 用于创建新存档。您有源代码吗?是的

是否有可能将大型
.a
文件拆分为多个较小的文件

我当前遇到了一个问题,
。一个
文件有多个GiB大,GCC甚至在标记为
-mcmodel=medium
的情况下也会引发错误。请使用binutils工具“ar”:

用于从存档中提取对象,以及

ar -r libsmall.a obj1.o obj2.o obj3.o
用于创建新存档。

使用binutils工具“ar”:

用于从存档中提取对象,以及

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

用于创建新存档。

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