这是我尝试从《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.so
或libbsd.a
。在评论中,您说您下载并构建了一个libbsd
文件(它有哪个后缀名?),但您没有说明安装在哪里。在指定-lbsd
之前,在命令行中添加-L/install/directory/for/libbsd
选项。或者尝试在没有-lbsd
的情况下编译,看看是否真的需要它。 - Jonathan Leffler/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