一、問題描述:make,遇到錯誤:cannot find -lbsd 。
二、原因:缺少缺少libbsd文件。
三、解決方法:
1、Fedora 系列(通過yum來下載更新軟件)
#yum install libbsd
#yum install libbsd-devel
安裝完成後就可以去apue.3e目錄make了。
2、Ubuntu 系列(通過apt-get來下載和更新軟件)
# apt-get install libbsd-dev
安裝完成後就可以去apue.3e目錄make了。
編譯完成後
#cp ./include/apue.h /usr/include/
#cp ./lib/libapue.a /usr/local/lib/
爲什麼要將libapue.a移到/usr/local/lib中呢?
原因是libapue.a是apue.h頭文件中包含的所有函數
及宏定義的具體實現,是一個靜態鏈接庫。
查看ld.conf.d/libc.conf你會發現gcc在搜索鏈
接庫的時候默認會去搜索/usr/local/lib/中的文件,
所以我們將其放在這裏。
這樣當你編寫了一個源代碼,你用gcc編譯的時候就不用在命令後面加 -lapue
否則會出現類似下面的錯誤:
/tmp/cchudidN.o: In function `main':
1_3.c:(.text+0x20): undefined reference to `err_quit'
1_3.c:(.text+0x5b): undefined reference to `err_sys'
collect2: ld returned 1 exit status
這是因爲你在編譯的時候沒有添加libapue.a這個庫。