《Unix環境高級編程第3版》apue.3e在Linux上無法安裝的問題

一、問題描述: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這個庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章