/usr/bin/ld 找不到 -lbsd

Posted

技术标签:

【中文标题】/usr/bin/ld 找不到 -lbsd【英文标题】:/usr/bin/ld cannot find -lbsd 【发布时间】:2013-10-29 23:34:44 【问题描述】:

这是我在尝试从《Unix 环境中的高级编程》一书中制作 apue.3e 源代码时遇到的错误。

/lib -lapue -pthread -lrt -lbsd
/usr/bin/ld: cannot find -lbsd
collect2: error: ld returned 1 exit status
make[1]: *** [badexit2] Error 1
make[1]: Leaving directory `/home/john/Documents/apue.3e/threads'
make: *** [all] Error 1

我查看了所有似乎都缺少文件符号链接的类似错误,但我无法弄清楚-lbsd 是什么。当我尝试将目录更改为/usr/bin/ld 时,它不存在。 -lbsd 应该在这个目录中还是 ld 只是找不到它?我试图避免在这里发布愚蠢的问题,但我不能忍受再被困在这个问题上。非常感谢任何帮助。

【问题讨论】:

是指libbsd吗? 我不确定。我下载并制作了 libbsd 文件,但我不确定下一步该做什么。 找到 / | grep libbsd ? 欢迎来到 Stack Overflow。请尽快阅读About 页面。充其量,您的命令的第一行似乎不完整。链接器(最好通过 C 编译器调用)无法在它被告知要查看的任何目录中找到库 libbsd.solibbsd.a。在 cmets 中,您说您下载并构建了 @987654330 @ 文件(它有哪个后缀?),但你没有说你安装它的位置。在指定-lbsd 之前,您需要在命令行中添加-L/install/directory/for/libbsd 选项。或者尝试在不使用-lbsd 的情况下进行编译,看看是否需要它。 在错误之前还有几行。 make[1]: Entering directory /home/john/Documents/apue.3e/threads' gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE badexit2.c -o badexit2 -L../lib -lapue -pthread -lrt -lbsd /usr/bin/ld: cannot find -lbsd collect2: error: ld returned 1 exit status make[1]: *** [badexit2] Error 1 make[1]: Leaving directory /home/john/Documents/apue.3e/threads' make: *** [all] Error 1 问题是我实际上并没有安装 libbsd,我只是做了它。我在使用 make install 时遇到问题,因为我没有权限,必须执行 sudo make install。 【参考方案1】:

sudo apt-get install libbsd-dev

【讨论】:

我得到了与 OP 完全相同的错误,这个解决方案解决了它。 这也解决了 Fedora 22 上的问题。命令如下所示:sudo dnf install libbsd-devel.

以上是关于/usr/bin/ld 找不到 -lbsd的主要内容,如果未能解决你的问题,请参考以下文章

/usr/bin/ld: 未定义的静态库引用

/usr/bin/ld:构建调试/obj/gpsitem.o:文件无法识别:文件被截断

/usr/bin/ld: 无法打开输出文件 bin/genericMatching: 没有这样的文件或目录

关于-static静态链接报出/usr/bin/ld: cannot find -lxxx的问题

[tech][转] 解决/usr/bin/ld: cannot find -lxxx 问题

/usr/bin/ld: cannot find -lfdfsclient