gpt4 book ai didi

c++ - gcc 链接器库搜索顺序;路径加上静态与共享

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

通读gcc手册,我认为以下两个说法是正确的:

  1. 在命令行中指定的库搜索路径在“默认”路径之前搜索(我假设这意味着 LIBRARY_PATH 环境变量中的内容)

  2. 共享库将优先于静态库链接(在没有标志说明不这样做的情况下)

但这两者中哪一个占主导地位?例如,如果我输入

gcc myprog.cpp -o myprog -Lmypath -lmylibrary

在mypath中有一个静态库“libmylibrary.a”,在LIBRARY_PATH指定的某个地方有一个共享库“libmylibrary.so”,这些库中的哪个将被使用?我的猜测是静态库将被使用(即 (1) 占主导地位)但我看到一些有趣的编译错误让我质疑这个猜测,所以我想确保...

最佳答案

在您的示例中,静态库 libmylibrary.a 将被链接到优先于任何可能的 libmylibrary.alibmylibrary.so存在于链接器的默认搜索目录之一中。链接器在任何默认位置之前在 mypath 中搜索,并尽快它找到一个 libmylibrary.alibmylibrary.so,它不再寻找满足-lmylibrary

如果 mypath 包含两者 libmylibrary.alibmylibrary.so,则后者将是首选。

我不确定“gcc 手册”指的是哪个来源,但是“gcc 链接器”是 GNU 链接器,ld,您会发现命令行选项的含义在其 manual 中有很好的解释

关于c++ - gcc 链接器库搜索顺序;路径加上静态与共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28607965/

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