/usr/bin/ld无法找到-lbsd。

10
这是我尝试从《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吗? - Zach Stark
我不确定。我已经下载并编译了libbsd文件,但是下一步该怎么做我还不确定。 - Skewjo
找 / | grep libbsd ? - tristan
1
欢迎来到Stack Overflow。请尽快阅读[关于]页面。你的命令的第一行似乎不完整,最好检查一下。链接器(最好通过C编译器调用)无法在任何已告知其查找的目录中找到库libbsd.solibbsd.a。在评论中,您说您下载并构建了一个libbsd文件(它有哪个后缀名?),但您没有说明安装在哪里。在指定-lbsd之前,在命令行中添加-L/install/directory/for/libbsd选项。或者尝试在没有-lbsd的情况下编译,看看是否真的需要它。 - Jonathan Leffler
这是错误之前的另外几行代码。make[1]: 进入目录 /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: 找不到 -lbsd collect2: 错误:ld 返回 1 退出状态 make[1]: *** [badexit2] 错误 1 make[1]: 离开目录 /home/john/Documents/apue.3e/threads' make: *** [all] 错误 1。问题在于我没有实际安装 libbsd,我只是编译了它。我在进行 sudo make install 时遇到了问题,因为我没有权限。 - Skewjo
感谢您的帮助。 - Skewjo
1个回答

20

使用sudo apt-get安装libbsd-dev


2
我遇到了和原帖作者完全相同的错误,而这个解决方案解决了它。 - 0x0
这也解决了在 Fedora 22 上的问题。命令看起来像这样:sudo dnf install libbsd-devel - Neaţu Ovidiu Gabriel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接