静态库中目标文件的顺序
我知道,当链接到多个静态库或目标文件时,顺序很重要(依赖库应在其依赖项之前列出)。我想知道,在使用 ar
创建库文件时,是否适用相同的规则,并且库内的顺序是否重要,或者在同一个 .a
文件中是否适用?没有什么区别。
我正在使用复杂的依赖关系图打包 200 多个目标文件,这样做
ar rcs mylib.a objs/*.o
比按正确顺序列出它们要容易得多。
我正在使用 gcc,如果它有什么区别的话。
I know that when linking to multiple static libraries or object files, the order matters (dependent libraries should be listed before their dependencies). I want to know if, when creating a library file with ar
, this same rule applies and the order within the library matters, or within the same .a
file it doesn't make a difference.
I am packing 200+ object files with a complicated dependency graph, and doing
ar rcs mylib.a objs/*.o
is considerably easier then listing them in the correct order.
I am using gcc
, if it makes a difference.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
很久以前,图书馆内的秩序曾经很重要。
对于任何 15-20 年以上的 UNIX 系统来说,它不再重要。来自
man ranlib
:大多数非古代 UNIX 系统要么在构建存档库时自动生成
__.SYMDEF
(其中包含上述索引),要么在内存中构建它链接时间。The order within the library used to matter long time ago.
It no longer matters on any UNIX system newer than ~15-20 years. From
man ranlib
:Most non-ancient UNIX systems either produce the
__.SYMDEF
(which contains above index) automatically while building the archive library, or build it in-memory at link time.