我知道当链接到多个静态库或目标文件时,顺序很重要(依赖库应该在它们的依赖项之前列出)。我想知道,在使用ar
创建库文件时,是否适用相同的规则并且库中的顺序很重要,或者在同一.a
文件中,它不会产生任何影响。 />
我正在打包200多个具有复杂依赖图的目标文件,并且正在执行
ar rcs mylib.a objs/*.o
比以正确的顺序列出它们要容易得多。
我正在使用gcc
,如果它有所作为。
答案 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
(包含上面的索引),或者在链接时在内存中生成它。