Unix网络编程之 | 您所在的位置:网站首页 › unix网络配置 › Unix网络编程之 |
unix网络编程unp.h最详细全面配置说明 今天开始学习Unix网络编程这本大神之作了,由于之前在学习另外一本杰作Unix环境高级编程,遇到过第一个程序编译报错的情况,知道这是大神自己写的头文件在我们自己系统没有包括进去,所以第一步就是搭建好编程环境。好了开始了,我的Linux系统是Ubuntu, 第一步:下载 unpv13e.tar.gz http://download.csdn.net/detail/ts173383201/4505201。 第二步:保存在一个目录下。 第三步:解压 tar -xzvf unpv13e.tar.gz 第四步:cd unpv13e ./configure。 第五步: cd lib 再 make cd ../libfree make cd ../libgai make 注:这两个make一开始我按照网上博客没有做,发现编译函数是小写时没出问题,但是程序含有大写函数时报错了,所以这两步要做。这里会遇到报错,第六步: sudo cp libunp.a /usr/lib sudo cp libunp.a /usr/lib64/ 第七步:在lib目录中找到 unp.h,在解压目录下找到config.h,unp.h中将#include "../config.h"改成#include "config.h" ,在unp.h中需要添加一行: #define MAX_LINE 2048,将他们复制到和我们的以后存放的源代码同一个目录下; 第八步:sudo cp unp.h /usr/include sudo cp config.h /usr/include。 第九步:可能还会遇到 undefined reference to 'err_quit',undefined reference to 'err_sys' 。这也是未定义的声明,也就是说这些函数没有实现,去官网把大神自己写的myerr.h,"apue.h"下载下来,放入/usr/include/ 和自己存放源代码的目录下,就可以了。 第十步:编译 gcc daytimetcpcli.c -o daytimetcpcli -lunp,lunp一定要加。 写个程序验证下 #include "unp.h" int main(int argc, char **argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if (argc != 2) err_quit("usage: a.out "); if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) err_sys("socket error"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13); /* daytime server */ if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) 0) { recvline[n] = 0; /* null terminate */ if (fputs(recvline, stdout) == EOF) err_sys("fputs error"); } if (n < 0) err_sys("read error"); exit(0); }编译通过了哈。 |
CopyRight 2018-2019 实验室设备网 版权所有 |