静态库中目标文件的顺序

时间:2011-12-29 23:03:51

标签: gcc static-libraries static-linking ar

我知道当链接到多个静态库或目标文件时,顺序很重要(依赖库应该在它们的依赖项之前列出)。我想知道,在使用ar创建库文件时,是否适用相同的规则并且库中的顺序很重要,或者在同一.a文件中,它不会产生任何影响。 /> 我正在打包200多个具有复杂依赖图的目标文件,并且正在执行

ar rcs mylib.a objs/*.o

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

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

1 个答案:

答案 0 :(得分:6)

图书馆中的订单很久以前就很重要了。

在任何比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(包含上面的索引),或者在链接时在内存中生成它。