gpt4 book ai didi

linux - 为什么指定输入库的顺序很重要?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:58 25 4
gpt4 key购买 nike

我对 Linux 编程还很陌生。你可以说我是一个 Windows 人。所以,我将我的项目移植到 Linux,这几乎让我发疯:我确定我已经用 -l 标志指定了所有依赖项,但我却收到“未解析的符号”错误。然后我找到了这个主题,它解决了我的问题:Boost linking on Linux with GCC

谁能解释一下为什么顺序很重要,以及它到底有多重要?我很确定 MSVC 链接器不是这种情况...

最佳答案

一个简单的例子会让你明白为什么一次性 Unix 链接器关心顺序。

假设您有 main.o(由 main.cpp 生成)和库 libx.a(无依赖项)和 liby.a(依赖于名为 newRefX 的 libx)

如果链接器按此顺序进行,那么链接器从 1 到 3 就没问题:

  1. main.o refX=undef, refY=undef
  2. liby.a refX=undef, refY=def, newRefX=undef
  3. libx.a refX=def, refY=def, newRefX=def

但是如果链接器按照这个顺序进行,你就会遇到 newRefX 的问题:

  1. main.o refX=undef, refY=undef
  2. libx.a refX=def, refY=undef,
  3. liby.a refX=def, refY=def, newRefX=undef

因此,您可以看到您需要最后一个最低级别的库(不依赖于其他库的库)。

关于linux - 为什么指定输入库的顺序很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8367888/

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