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


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

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

 

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

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

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

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

./configure

make

make install

 

但當執行 make時報錯

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種模式查詢)

 

完!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM