編譯 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種模式查詢)
完!