gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:22 25 4
gpt4 key购买 nike

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

Everythink 工作正常,但 ar 有选项

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

要移动库中的目标文件,为什么目标文件的顺序很重要?请向我展示对象文件必须按正确顺序排列的示例。

最佳答案

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

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

关于c - 为什么目标文件的顺序对静态库很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36683127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com