C /usr/bin/ld找不到-lbsd

C /usr/bin/ld找不到-lbsd,c,makefile,C,Makefile,这是我在尝试编写《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' mak

这是我在尝试编写《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
就是找不到它?我尽量避免在这里张贴愚蠢的问题,但我不能再忍受被困在这个问题上了。非常感谢您的帮助。

sudo apt get install libbsd dev

它指的是什么?我不确定。我下载并制作了libbsd文件,但我不确定下一步该怎么办。find/| grep libbsd?欢迎使用堆栈溢出。请尽快阅读这一页。你的命令的第一行充其量似乎是不完整的。链接器(最好通过C编译器调用)无法在其被告知要查找的任何目录中找到库
libbsd.so
libbsd.a
。在评论中,你说你下载并构建了一个
libbsd
文件(它有哪个后缀?),但你没有说你在哪里安装了它。在指定
-lbsd
之前,您需要在命令行中添加
-L/install/directory/for/libbsd
选项。或者尝试在不使用
-lbsd
的情况下编译,看看是否需要它。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]:离开目录
/home/john/Documents/apue.3e/threads'make:**[all]错误1问题是我没有实际安装libbsd,我只安装了它。我的make安装有问题,因为我没有权限,不得不进行sudo make安装。我得到了与OP完全相同的错误,这个解决方案解决了它。这也解决了Fedora 22上的问题。命令如下所示:
sudo dnf install libbsd devel