mac下 unix網路編程環境安裝
- 1.下載安裝包unpv13e
- 2.解壓后檔案后,在終端通過命令進入unpv13e檔案夾,依次執行下列命令
- 3.復制檔案到相應路徑
- 4.嘗試編譯例程
本機環境 mac os 10.15.17
1.下載安裝包unpv13e
下載地址http://www.unpbook.com/src.html
2.解壓后檔案后,在終端通過命令進入unpv13e檔案夾,依次執行下列命令
./configure
cd lib
make
cd../libfree
make
- 在libfree下make報錯
inet_ntop.c:56:1: error: conflicting types for ‘inet_ntop’
解決辦法:
在unpv13e/libfree下找到inet_ntop.c檔案把#include <arpa/inet.h>注釋掉

最侄訓在unpv13e檔案夾中成功生成libunp.a檔案
3.復制檔案到相應路徑
- libunp.a檔案復制到usr/local/lib檔案夾中
- -將unpv13e下的config.h和修改后的unpv13e/lib中的unp.h復制到usr/include檔案夾中
- 將unp.h中的 #include “…/config.h” 改為 #include “config.h”
具體命令如下
sudo cp libunp.a /usr/local/lib
sudo cp lib/unp.h /usr/include
sudo cp config.h /usr/include
- 可能會遇到的問題記錄
1.Operation not permitted:
原因:這是因為rootless機制未關閉
解決方法:
重啟Mac,開機時長按command+R進入恢復模式,在上面的實用工具中找到teriminal/終端,輸入
csrutil disable
關閉rootless機制(如果要再開啟輸入csrutil enable即可)
2.usr/include檔案夾找不到:
解決辦法1:安裝command line Tools,在終端執行xcode-select --install
解決辦法2:如果安裝command line Tools不能解決,進行如下操作
#根目錄掛載為可讀寫
sudo mount -uw /
#建立軟鏈
sudo ln -s "$(xcrun --show-sdk-path)/usr/include" /usr/include
4.嘗試編譯例程
確認libunp.a,unp.h,config.h已拷貝在相應檔案夾下后,開始編譯第一個例子daytimetcpcli.c;在unpv13e檔案夾下,依次執行相應命令:
cd intro
gcc daytimetcpcli.c -o daytimetcpcli -lunp
- -lunp的含義,-l 引數加上 libunp.a 去掉lib和后面的.a,鏈接靜態庫
成功則在intro檔案夾下生成了可執行檔案a.out,測驗:
./daytimetcpcli 127.0.0.1
這時回傳錯誤如下:

這個錯誤是由于daytime的服務程式未被打開
- 解決辦法:在unpv133/intro下編譯daytimetcpsrv程式
gcc daytimetcpsrv.c -o daytimetcpsrv -lunp
sudo ./daytimetcpsrv
再次運行客戶端程式,執行成功

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/229338.html
標籤:其他
