c-为什么对象文件的顺序对静态库很重要



我创建了一些文件: file1.c file2.c file3.c 我使用gcc -c file1.c编译它们,对其他文件也这样做,得到了对象文件。后来我使用ar工具创建了静态库。

Everything工作正常,但ar有选项

ar -m -a file.o lib.a filetomove.o

要在库中移动对象文件,为什么对象文件的顺序很重要?请给我举个例子,说明对象文件的顺序必须正确。

随着时间的推移,问题越来越小,但在很长一段时间内,链接器都是单程的。这意味着,如果一个符号在a.o中定义并在b.o中引用,链接器必须在a.o之前"查看"b.o,否则它永远找不到引用的定义。

在其他情况下,有时在最后链接的库中提供"默认"函数。这是嵌入式系统开发中的一种流行技术。您可以通过在静态库或对象模块中链接来提供重写函数,但如果不这样做,最后一个库将提供满足链接器的符号。

相关内容

  • 没有找到相关文章

最新更新