--解決unp.h編譯問(wèn)題
網(wǎng)站制作、成都做網(wǎng)站介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。成都創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開(kāi)源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺(jué)化效果。
1、安裝編譯器,為了齊全視情況而定是否安裝build-essential
sudo apt-get install build-essential
2、下載本書(shū)的頭文件及示例源碼
原書(shū)地址:www.turingbook.com
3、解壓unpv13e.tar.gz后進(jìn)入目錄查看README,然后可以按照里面提示操作,在Ubuntu環(huán)境下可能會(huì)遇到問(wèn)題,以Ubuntu12.04LTS為例:
第一步:在終端中進(jìn)入upnv13e目錄,然后執(zhí)行代碼:
1. chmod u+x configure #賦予執(zhí)行權(quán)限
2. ./configure
第二步:進(jìn)入lib目錄下執(zhí)行make:
1. cd lib
2. make
第三步:建立基礎(chǔ)類庫(kù):
1. cd ../libfree
2. make
第四步:編譯函數(shù)庫(kù):
1. cd ../libgai
2. make
4、將生成的libunp.a靜態(tài)庫(kù)復(fù)制到/usr/lib/和/usr/lib64/中。
1. cd ..
2. sudo cp libunp.a /usr/lib
3. sudo cp libunp.a /usr/lib64
5、修改unp.h并將unp.h和config.h拷貝到/usr/include中,為了以后頭文件包含方便
1. vim lib/unp.h //將unp.h中#include"../config.h"修改#include"config.h"
2. sudo cp lib/unp.h /usr/include
3. sudo cp config.h /usr/include
6、編譯源代碼
1. cd ./intro
2. gcc daytimetcpcli.c -o daytimetcpcli -l unp
如果發(fā)現(xiàn)報(bào)錯(cuò):
daytimetcpcli.c:1:17: 致命錯(cuò)誤: /usr/include/unp.h:權(quán)限不夠
解決方法:
1. 把 /usr/include/unp.h文件刪掉:
sudo rm /usr/include/unp.h
2. 進(jìn)入unpv13e解壓目錄下的lib文件里面找到unp.h,chmod,修改它的權(quán)限為讀 寫(xiě),或只讀
3. 重新將unp.h文件拷貝一次:
sudo cp lib/unp.h /usr/include
完成。
跟普通的編譯不一樣的是要在最后加上剛才那個(gè)鏈接庫(kù),-l參數(shù)加上剛才那個(gè)libunp.a去掉lib和后面的.a。最后得到參數(shù)-l unp。
7,編寫(xiě)程序
以后編寫(xiě)完的程序安裝6中的代碼編譯就行了,然后代碼可以完全跟書(shū)上的一樣。只是在編譯的時(shí)候需要加上-l unp。不然的話,會(huì)出現(xiàn)故障!
如:gcc test.c -l unp
原文參考:http://blog.csdn.net/a649518776/article/details/6724121