gpt4 book ai didi

c - gcc -l 选项的位置

转载 作者:行者123 更新时间:2023-11-30 15:14:11 29 4
gpt4 key购买 nike

gcc 的手册页有一节描述 -l 选项的位置:

It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, foo.o -lz bar.o searches library z after file foo.o but before bar.o. If bar.o refers to functions in z, those functions may not be loaded.

问题是:

如果链接器按顺序搜索和处理文件列表,则命令不应在任何源代码和目标文件之前指定 -l 选项,而不是在它们之后,以便可以使用该库对于所有目标文件。

最佳答案

链接器只是按照外部引用在命令行上出现的顺序解析外部引用。

以您引用中的示例为例,foo.o -lz bar.o:如果foo.o使用z库中的函数然后,当链接器加载 z 库时,这些问题就会得到解决。然而,它并没有真正缓存这些条目,一旦使用 z 库解析了外部引用,链接器就会忘记它们。现在,当 bar.o 出现并尝试使用 z 库中的函数时,这些函数将不会被解析,因为链接器不会读取 z > 再次图书馆。

关于c - gcc -l 选项的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34149350/

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