/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.so
或 libbsd.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:构建调试/obj/gpsitem.o:文件无法识别:文件被截断
/usr/bin/ld: 无法打开输出文件 bin/genericMatching: 没有这样的文件或目录
关于-static静态链接报出/usr/bin/ld: cannot find -lxxx的问题