Unix網路編程unp.h問題以及Linux中的庫__html5

來源:互聯網
上載者:User

Stevens的《UNIX網路編程 卷1:通訊端連網API》是一本很著名的UNIX網路編程書籍。其中使用了一個unp.h的引用,如果沒有設定相應的庫的話,即使引入了標頭檔也是沒用的。所以首先要配置相應的庫。

基礎環境:

作業系統 Debian

開發環境 GCC,MAKE等,首先要有c編譯器,make等基礎的工具。如果沒有的話,可以通過下面命令安裝。這個命令會安裝一個工具集,其中包含了很多linux C開發所需的工具。

sudo apt-get install build-essential

(1)從網上下載unpv.13e.tar.gz。在網上一搜一大堆。unpv.12e.tar.gz版本的有問題,所以要避免使用。下載了安裝包解壓後就可以照著他的README檔案指示安裝了。解壓的命令是

tar -xvf unpv.13e.tar.gz

(2)現在可以cd到unpv13e目錄。執行下面兩個命令就可以在unpv13e目錄下產生相應的庫函數。
cd unpv13e./configurecd lib && make

(3)返回unpv13e目錄,將產生的libunp.a複製到相應的庫檔案目錄下。相應的shell命令。
cd ..sudo cp libunp.a /usr/lib  sudo cp libunp.a /usr/lib64

(4)修改unp.h並將其和config.h拷貝到/usr/iinclude中
gedit lib/unp.h   //將unp.h中#include "../config.h"修改為#include "config.h"

sudo cp lib/unp.h /usr/include  sudo cp config.h /usr/include 


(5)編寫一個小程式測試一下吧,在unpv13e的intro目錄中包含了幾個執行個體。可以用來測試一下。看能否產生相應的可執行檔。

cd ./intro  gcc daytimetcpcli.c -o daytimetcpcli -lunp 


附錄:Linux中的庫

庫是作為軟體的一個組建存在的,其目的是提高軟體的可重用性。庫裡面封裝了資料和函數。庫可以分為靜態庫和動態庫兩種。在Linux系統中,通常把庫檔案放在/usr/lib或/lib目錄中。Linux庫檔案名稱由首碼lib、庫名以及尾碼組成,其中動態庫的尾碼為.so,而靜態庫的尾碼為.a。


在程式中使用靜態庫和動態庫時,他們載入的順序是不一樣的。靜態庫的代碼在編譯是就拷貝到應用程式中,因此當多個應用程式同時引用一個靜態庫函數時,記憶體會有調用函數的多個副本。,這樣的優點是可以節約編譯是的時間。而動態庫是在程式開始運行後調用庫函數是才被載入的,被調函數在記憶體中只有一個副本,並且動態庫是可以在程式運行期間釋放動態庫所佔記憶體的。


(1)靜態庫的建立和使用

建立靜態庫的步驟如下:

1)在一個標頭檔中聲明靜態庫所匯出的函數。

2)在一個源檔案中實現靜態庫函數所匯出的函數。

3)編譯源檔案,產生可執行代碼。

4)將可執行代碼所在的目標檔案加入到某個靜態庫中,並在靜態庫拷貝到系統預設的存放庫檔案的目錄下。

 

編譯並添加靜態庫

gcc -o mylib.o -c mylib.car rcs libmylib.a mylib.o

 


 

ar命令可以建立和修改靜態庫。具體參見:man ar


(2)動態庫的建立和使用

上面的配置過程建立的就是一個動態庫。在編譯包含動態庫的函數是可以使用“-lunp”(包含上面所編譯的庫檔案)選項。程式將調用動態連結程式庫libunp.so中的函數。在-lunp中,-l為選項,unp為庫名。unp是“libunp.so”的中間部分,linux中所以的庫都以lib開始,在編譯器時無需帶上首碼和尾碼。

 

編譯並添加動態庫

gcc -fPIC -o mylib.o -c mylib.cgcc -shared -o libmylib.so mylib.o

gcc -fPIC -shared -o libmylib.so mylib.c


 

參考:unix網路環境搭配

          UNIX網路編程之旅-配置unp.h標頭檔環境[ 轉]

          LInux C 實戰編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.