6

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

ar rcs mylib.a objs/*.o

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

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

4

1 回答 1

8

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

它在任何 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在构建归档库时自动生成(包含上述索引),要么在链接时在内存中构建它。

于 2011-12-29T23:07:06.547 回答