本机环境macos10.15.17
1.下载安装包unpv13e
下载地址http://www.unpbook.com/src.html
2.解压后文件后,在终端通过命令进入unpv13e文件夹,依次执行下列命令
在libfree下make报错
inet_ntop.c:56:1:error:conflictingtypesfor‘inet_ntop’
解决办法:
在unpv13e/libfree下找到inet_ntop.c文件把#include注释掉
最终会在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”
具体命令如下
可能会遇到的问题记录
1.Operationnotpermitted:
原因:这是因为rootless机制未关闭
解决方法:
重启Mac,开机时长按command+R进入恢复模式,在上面的实用工具中找到teriminal/终端,输入
csrutildisable
关闭rootless机制(如果要再开启输入csrutilenable即可)
2.usr/include文件夹找不到:
解决办法1:安装commandlineTools,在终端执行xcode-select--install
解决办法2:如果安装commandlineTools不能解决,进行如下操作
4.尝试编译例程
确认libunp.a,unp.h,config.h已拷贝在相应文件夹下后,开始编译第一个例子daytimetcpcli.c;在unpv13e文件夹下,依次执行相应命令:
cdintro
gccdaytimetcpcli.c-odaytimetcpcli-lunp
-lunp的含义,-l参数加上libunp.a去掉lib和后面的.a,链接静态库
成功则在intro文件夹下生成了可执行文件a.out,测试:
./daytimetcpcli127.0.0.1
这时返回错误如下:
这个错误是由于daytime的服务程序未被打开
解决办法:在unpv133/intro下编译daytimetcpsrv程序
gccdaytimetcpsrv.c-odaytimetcpsrv-lunp
sudo./daytimetcpsrv
再次运行客户端程序,执行成功
原文链接:https://blog.csdn.net/weixin_42255821/article/details/110420885