在學習unix高階環境程式設計與unix網路程式設計的時候,按照作者的提示操作即可成功的編譯執行這兩本書提供的源**,但是如果自己想想在自己的環境裡按照書籍學習,也就是在自己的環境裡呼叫作者封裝的api該怎麼辦呢?很直接的想法是將作者提供的api編譯成linux下的庫,然後將需要的標頭檔案和可檔案拷貝到系統存放標頭檔案和庫檔案的位置就可以了,查閱資料之後,成功的在ubuntu16.04上搭建好了這兩本書的執行環境。
解壓原始檔
tar -xvf apue.3e.tar.gz
安裝依賴libbsd-dev
sudo apt-get install libbsd-dev
進入在apue.3e目錄下執行make
命令,會在lib目錄下生成libapue.a的庫檔案
用管理許可權將相應的標頭檔案和庫檔案拷貝到系統目錄
cp ./include/apue.h /usr/include
cp ./lib/libapue.a /usr/lib
cp ./lib/error.c /usr/include
#include
intmain(int argc, char *argv)
g++
-0apue_test
main
.cpp
到此為止,apue.3e的開發環境就搭建好啦,下面我們繼續搭建《unix網路程式設計》這本書的開發環境!
解壓源**
tar -xvf unpv13e.tar.gz
在目錄unpe13v下依次執行以下命令編譯源**
./configure
cd lib
make
cd ../libfree
make
cd ../libroute
make // 這一步可能會出錯,是因為你的系統不支援4.4bsd,並不影響本書的學習
cd ../libgai
make
cd ..
sudo cp ./lib/unp.h /usr/include
sudo cp config.h /usr/include
#include "unp.h"
#include
intmain(int argc, char **argv)
}
g++ -o daytimesrv daytimetcpsrv.cpp -lunp
/tmp/cc4ni2an.o: in function `main':
daytimetcpsrv.c:(.text+0x37): undefined reference to `socket(int, int, int)'
daytimetcpsrv.c:(.text+0x97): undefined reference to `bind(int, sockaddr const*, unsigned int)'
daytimetcpsrv.c:(.text+0xa9): undefined reference to `listen(int, int)'
daytimetcpsrv.c:(.text+0xc0): undefined reference to `accept(int, sockaddr*, unsigned int*)'
daytimetcpsrv.c:(.text+0x133): undefined reference to `write(int, void*, unsigned long)'
daytimetcpsrv.c:(.text+0x140): undefined reference to `close(int)'
collect2: error: ld returned 1 exit status
OpenDDS在Linux與Windows上互通
前言 之前在自己的電腦上安裝了opendds,在乙個機子上用三個終端,分別執行資訊倉庫 發布端 訂閱端,能夠正常通訊。於是利用實驗室的linux的機子,實現win和linux互通。1保證win和linux在同乙個區域網裡,相互ping通。ping不通可能是防火牆的原因,關掉。2linux與windo...
linux分割槽與目錄(3)
linux中乙個硬碟就是乙個檔案,存放 dev目錄下面,ide硬碟命名為hdx x為從a d,一般電腦的ide硬碟 最多四個 scsi,sata,usb硬碟等,在 dev 目錄下被命名為sdx x為a z 比如scsi硬碟,主分割槽從sda1開始到sda4,邏輯分割槽從sda5開始,邏輯分割槽永遠從...
在linux上面安裝python3
在 linux 中安裝 python 3.6 在我寫這篇文章的時候 2017 年三月中旬 在 centos 和 debian 8 中可用的最新 python 版本分別是 python 3.4 和 python 3.5 雖然我們可以使用 yum 和 aptitude 或 apt get 安裝核心安裝包...