初次學(xué)UNIX環(huán)境高級(jí)編程(第三版)都會(huì)遇到頭文件"apue.h"怎么添加的問(wèn)題运嗜,這里說(shuō)下從下載源碼到編譯通過(guò)的整個(gè)過(guò)程欣喧。當(dāng)然在編譯中會(huì)遇到各種error轰驳,本人也踩了好幾個(gè)坑蹲坷,好在都解決了坷剧。
下載源碼及解壓
先新建一個(gè)自己準(zhǔn)備存放源碼的目錄浦夷,然后下載
cd /home/
mkdir learnApue
cd learnApue
wget http://www.apuebook.com/src.3e.tar.gz
tar -zxvf src.tar.gz
解壓后的文件在目錄"aupe.3e"下辖试。
頭文件配置
經(jīng)過(guò)上面的步驟,當(dāng)前所在目錄應(yīng)該是"/home/learnApue/"
cd ./src.3e/apue.3e
cp ./include/apue.h /usr/include/
cp ./lib/error.c /usr/include/
編輯"/usr/include/apue.h"
vim /usr/include/apue.h
光標(biāo)移動(dòng)到文件最后一行"#endif"的前面劈狐,然后添加如下代碼
#include "error.c"
保存退出
make報(bào)錯(cuò)及其解決方案
經(jīng)過(guò)上面的操作罐孝,然后就可以編譯了,這時(shí)你所在目錄應(yīng)該是"/home/learnApue/src.3e/apue.3e/"
make
正常情況下都會(huì)報(bào)error肥缔,下面是我遇到的error
error類型1
根據(jù)錯(cuò)誤提示莲兢,systype.sh無(wú)法執(zhí)行,我的方法是更改權(quán)限然后再編譯
chmod 755 systype.sh
make
error類型2
chmod 755 ./advio/fixup.awk
make
繼續(xù)更改權(quán)限续膳,只要是執(zhí)行權(quán)限問(wèn)題改艇,都可以更改權(quán)限后再編譯
error類型3
下面的這個(gè)錯(cuò)誤我沒(méi)有碰到,來(lái)自于網(wǎng)友的報(bào)錯(cuò)坟岔,這里給出關(guān)鍵報(bào)錯(cuò)信息
/usr/bin/ld: cannot find -lbsd
...
make: ***[all] Error 1
根據(jù)這個(gè)error提示谒兄,應(yīng)該是缺少一個(gè)庫(kù),解決方案如下社付。
apt-get install libbsd-dev
make
error類型4
解決方法如下
vim stdio/buf.c
要說(shuō)明的是我是roor權(quán)限承疲,不是roor權(quán)限的在上一條命令前加sudo,再編譯鸥咖。
希望對(duì)各位正在使用UNIX環(huán)境高級(jí)編程一書的同行們有幫助燕鸽,有錯(cuò)誤還請(qǐng)指出。