[UNIX環境高級編程](第三版)中apue.h的問題

編譯 gcc -g myls.c 時,報錯 ‘找不到頭文件 apue.h’html

apue.h是做者本身寫的一個文件,系統不自帶。其中包含了經常使用的頭文件,以及出錯處理函數的定義。linux

 

須要到 http://www.apuebook.com/code3e.html(這本書的官網) 下載  ‘src.3e.tar.gz’windows

進行解壓(最新版產生的目錄apue.3e),並執行安裝ide

tar -zvx -f src.3e.tar.gz函數

進入目錄apue.3e,執行安裝工具

./configure網站

makespa

make install.net

 

但當執行 make時報錯code

make[1]: *** [barrier] 錯誤 1

解決方法:因爲執行make時依賴於 libbsd這個庫,須要安裝 libbsd,

libbsd的官方解釋:This library provides useful functions commonly found on BSD systems,

and lacking on others like GNU systems, thus making it easier to port projects with strong BSD origins,

without needing to embed the same code over and over again on each project.

個人理解是,Linux與Unix有必定的差別,libbs庫提供了一些 Linux系統中缺乏的東西

 

libbsd庫須要到 http://pkgs.org/search/?query=libbsd&type=smart 肯定下載的版本,執行安裝(yum/apt-get)

或者下載到本地windows系統,經過ftp工具傳送到Linux再安裝

根據Linux的版本,下載相應的兩個安裝文件

例如CentOS 6系列/x86_64,須要下載

libbsd-0.6.0-1.el6.art.x86_64.rpm

libbsd-devel-0.6.0-1.el6.art.x86_64.rpm

而後按照順序 安裝便可

yum install libbsd-0.6.0-1.el6.art.x86_64.rpm

yum install libbsd-devel-0.6.0-1.el6.art.x86_64.rpm

 

再到apue.3e ,執行make、make install

此時會產生靜態庫文件 libapue.a,也就是最初報錯缺乏的東西

cp /apue.3e/include/apue.h /usr/include/

cp ./lib/libapue.a  /usr/lib 

 

執行編譯經過

gcc myls.c -o myls -lapue (編譯須要鏈接靜態庫)

 

另分享一個rpm資源的網站,能夠搜索linux各個版本的軟件資源

http://rpm.pbone.net/ (底部分爲4種模式查詢)

 

完!

相關文章
相關標籤/搜索