gpt4 book ai didi

c++ - usr/bin/ld : cannot find -l

转载 作者:bug小助手 更新时间:2023-10-28 01:31:12 27 4
gpt4 key购买 nike

我正在尝试编译我的程序并返回此错误:

usr/bin/ld: cannot find -l<nameOfTheLibrary>

在我的 makefile 中,我使用命令 g++ 并链接到我的库,这是指向位于其他目录中的库的符号链接(symbolic link)。

请问有没有可以添加的选项?

最佳答案

要弄清楚链接器在寻找什么,请在详细模式下运行它。

例如,我在尝试使用 ZLIB 支持编译 MySQL 时遇到了这个问题。我在编译过程中收到这样的错误:

/usr/bin/ld: cannot find -lzlib

我做了一些谷歌搜索,并不断遇到相同类型的不同问题,人们会说要确保 .so 文件确实存在,如果不存在,则创建指向版本化文件的符号链接(symbolic link),例如,zlib.so.1.2.8。但是,当我检查时, zlib.so 确实存在。所以,我想,这肯定不是问题。

我在互联网上看到另一个帖子,建议使用 LD_DEBUG=all 运行 make:

LD_DEBUG=all make

虽然我得到了大量的调试输出,但实际上并没有什么帮助。它比其他任何事情都增加了更多的困惑。所以,我准备放弃了。

然后,我顿悟了。我想实际检查 ld 命令的帮助文本:

ld --help

由此,我想出了如何以详细模式运行 ld(想象一下):

ld -lzlib --verbose

这是我得到的输出:

==================================================
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.a failed
attempt to open /usr/local/lib64/libzlib.so failed
attempt to open /usr/local/lib64/libzlib.a failed
attempt to open /lib64/libzlib.so failed
attempt to open /lib64/libzlib.a failed
attempt to open /usr/lib64/libzlib.so failed
attempt to open /usr/lib64/libzlib.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.a failed
attempt to open /usr/local/lib/libzlib.so failed
attempt to open /usr/local/lib/libzlib.a failed
attempt to open /lib/libzlib.so failed
attempt to open /lib/libzlib.a failed
attempt to open /usr/lib/libzlib.so failed
attempt to open /usr/lib/libzlib.a failed
/usr/bin/ld.bfd.real: cannot find -lzlib

叮、叮、叮……

所以,最终修复它,以便我可以使用我自己的 ZLIB 版本(而不是捆绑版本)编译 MySQL:

sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so

瞧!

关于c++ - usr/bin/ld : cannot find -l<nameOfTheLibrary>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710047/

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