unix网络编程 环境搭建 环境配置

xiaoxiao2021-02-28  106

转自:http://blog.csdn.net/zone_programming/article/details/51050726

遇到跟这篇博客一模一样的问题,但是搜索时并没有出现在首页,于是转载并重新起了个题目。

学习unp网络编程,树上的例子均存在#include "unp.h",故需要对环境进行配置。

1. 到资源页下载unpv13e 

2. 解压并将unpv13e 移动到相应的文件夹下

3. 编译

[cpp] view plain copy print ? >$ cd unpv13e   >~unpv13e/$ ./configure    >~unpv13e/$ cd lib  >~unpv13e/lib/$ make    >~unpv13e/lib/$ cd ../libfree  >~unpv13e/libfree/$ make   >$ cd unpv13e >~unpv13e/$ ./configure >~unpv13e/$ cd lib >~unpv13e/lib/$ make >~unpv13e/lib/$ cd ../libfree >~unpv13e/libfree/$ make

如若出现以下问题:

[cpp] view plain copy print ? gcc -I../lib -g -O2 -D_REENTRANT -Wall   -c -o inet_ntop.o inet_ntop.c  inet_ntop.c: In function ‘inet_ntop’:  inet_ntop.c:60:9: error: argument ‘size’ doesn’t match prototype    size_t size;           ^  In file included from inet_ntop.c:27:0:  /usr/include/arpa/inet.h:64:20: error: prototype declaration   extern const char *inet_ntop (int __af, const void *__restrict __cp,                      ^  make: *** [inet_ntop.o] Error 1   gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o inet_ntop.o inet_ntop.c inet_ntop.c: In function ‘inet_ntop’: inet_ntop.c:60:9: error: argument ‘size’ doesn’t match prototype size_t size; ^ In file included from inet_ntop.c:27:0: /usr/include/arpa/inet.h:64:20: error: prototype declaration extern const char *inet_ntop (int __af, const void *__restrict __cp, ^ make: *** [inet_ntop.o] Error 1

则需要:

[cpp] view plain copy print ? >~unpv13e/libfree/$ vim inet_ntop.c  //将第60行的 size_t size 改成 socklen_t size;  >~unpv13e/libfree/$ make // 改变完后重新make  >~unpv13e/libfree/$ cd ../libgai  >~unpv13e/libgai/$ make   //以下只是warning, 乎略之  /usr/include/arpa/inet.h: In function ‘inet_ntop’:  inet_ntop.c:152:23: warning: ‘best.len’ may be used uninitialized in this function [-Wmaybe-uninitialized]     if (best.base == -1 || cur.len > best.len)                         ^  inet_ntop.c:123:28: note: ‘best.len’ was declared here    struct { int base, len; } best, cur;                              ^  gcc -I../lib -g -O2 -D_REENTRANT -Wall   -c -o inet_pton.o inet_pton.c  ar rv ../libunp.a in_cksum.o inet_ntop.o inet_pton.o  a - in_cksum.o  a - inet_ntop.o  a - inet_pton.o  ranlib ../libunp.a   >~unpv13e/libfree/$ vim inet_ntop.c //将第60行的 size_t size 改成 socklen_t size; >~unpv13e/libfree/$ make // 改变完后重新make >~unpv13e/libfree/$ cd ../libgai >~unpv13e/libgai/$ make //以下只是warning, 乎略之 /usr/include/arpa/inet.h: In function ‘inet_ntop’: inet_ntop.c:152:23: warning: ‘best.len’ may be used uninitialized in this function [-Wmaybe-uninitialized] if (best.base == -1 || cur.len > best.len) ^ inet_ntop.c:123:28: note: ‘best.len’ was declared here struct { int base, len; } best, cur; ^ gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o inet_pton.o inet_pton.c ar rv ../libunp.a in_cksum.o inet_ntop.o inet_pton.o a - in_cksum.o a - inet_ntop.o a - inet_pton.o ranlib ../libunp.a

至此,编译成功生成静态库libunp.a

4. 将生成的libunp.a复制到/usr/lib下

[cpp] view plain copy print ? >~unpv13e/libgai/$ cd ..  >~unpv13e/$ sudo cp libunp.a /usr/lib   >~unpv13e/libgai/$ cd .. >~unpv13e/$ sudo cp libunp.a /usr/lib

5. 修改unpv13e/lib/unp.h并复制

[cpp] view plain copy print ? >~unpv13e/$ vim lib/unp.h  // 将#include "../config.h" 改成 #include "config.h"  >~unpv13e/$  sudo cp lib/unp.h /usr/include  >~unpv13e/$ sudo cp config.h /usr/include   >~unpv13e/$ vim lib/unp.h // 将#include "../config.h" 改成 #include "config.h" >~unpv13e/$ sudo cp lib/unp.h /usr/include >~unpv13e/$ sudo cp config.h /usr/include

6. 编译例子

[cpp] view plain copy print ? >~unpv13e/$  cd intro  >~unpv13e/$  gcc daytimetcpcli.c -o cli -lunp   >~unpv13e/$ cd intro >~unpv13e/$ gcc daytimetcpcli.c -o cli -lunp

编译成功则大功告成。

转载请注明原文地址: https://www.6miu.com/read-48383.html

最新回复(0)