gcc - 静态库中目标文件的顺序

标签 gcc static-libraries static-linking unix-ar

我知道当链接到多个静态库或目标文件时,顺序很重要(依赖库应该在它们的依赖之前列出)。我想知道在使用 ar 创建库文件时是否,同样的规则适用,图书馆内的顺序很重要,或者在同一个 .a 内。文件没有区别。
我正在打包 200 多个具有复杂依赖关系图的目标文件,并且正在做

ar rcs mylib.a objs/*.o

比以正确的顺序列出它们要容易得多。

我正在使用 gcc ,如果它有所作为。

最佳答案

图书馆内的秩序很久以前就很重要。

它在任何更新超过 15-20 年的 UNIX 系统上都不再重要。来自 man ranlib :

   An archive with such an index speeds up linking to the library
   and allows routines in the library to call each other without
   regard to their placement in the archive.

大多数非古老的 ​​UNIX 系统要么产生 __.SYMDEF (包含上述索引)在构建存档库时自动生成,或在链接时在内存中构建。

关于gcc - 静态库中目标文件的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674511/

相关文章:

c - 安装了 XCode,但 GCC 不起作用

windows - 是否可以在不链接到 c 库且不使用 ExitProcess() 的情况下从汇编代码创建 Windows exe?

gcc - 为 ARM 项目编写 makefile

c - ALSA Lib 1.1.2 编译错误

go - 我可以在 cgo 中使用 libtool 输出吗?

objective-c - 是否可以在静态库中使用 FlurryAPI?

c++ - VS2012 - 似乎试图链接到 DLL 与 LIB

ios - 在 RubyMotion 应用程序中使用 Facebook SDK

c++ - 将 OpenMP 与 -fopenmp 和 -lgomp 链接起来的区别

c - GCC 如何阻止程序内的系统调用?