静态库中目标文件的顺序



我知道当链接到多个静态库或目标文件时,顺序很重要(依赖库应该在它们的依赖项之前列出)。我想知道,当使用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(包含上述索引),要么在链接时在内存中构建。

相关内容

  • 没有找到相关文章

最新更新