ld:在ubuntu上找不到-lnftnl



我在编译libnftnl时有问题。我在ubuntu上安装了libnftnl11libnftnl-dev,但是链接显示:/usr/bin/ld: cannot find -lnftnl。我还缺什么吗?

我用:gcc x.c -o x -static -L/usr/local/lib/ -lnftnl -lmnl 编译

您需要使用详细模式来检查究竟是哪里出了问题。

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

/usr/bin/ld: cannot find -lzlib


我做了一些谷歌和不断遇到不同的问题,人们会说,要确保。so文件确实存在,如果它不存在,然后创建一个符号链接到版本文件,例如,zlib.so.1.2.8。但是,当我检查的时候,zlib。这确实存在。所以,我想,这肯定不是问题所在。

我在网上看到另一个帖子,建议用' LD_DEBUG=all: '来运行make。

LD_DEBUG =所有使

虽然我得到了大量的调试输出,但实际上并没有什么帮助。这比其他任何事情都更让人困惑。所以,我正打算放弃。

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

ld -帮助

由此,我想出了如何在详细模式下运行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

最新更新