学习unp网络编程,树上的例子均存在#include "unp.h",故需要对环境进行配置。
1. 到资源页下载unpv13e
2. 解压并将unpv13e 移动到相应的文件夹下
3. 编译
- >$ cd unpv13e
- >~unpv13e/$ ./configure
-
- >~unpv13e/$ cd lib
- >~unpv13e/lib/$ make
-
- >~unpv13e/lib/$ cd ../libfree
- >~unpv13e/libfree/$ make
如若出现以下问题:
- 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
则需要:
- >~unpv13e/libfree/$ vim inet_ntop.c
- >~unpv13e/libfree/$ make
- >~unpv13e/libfree/$ cd ../libgai
- >~unpv13e/libgai/$ make
- /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下
- >~unpv13e/libgai/$ cd ..
- >~unpv13e/$ sudo cp libunp.a /usr/lib
5. 修改unpv13e/lib/unp.h并复制
- >~unpv13e/$ vim lib/unp.h
- >~unpv13e/$ sudo cp lib/unp.h /usr/include
- >~unpv13e/$ sudo cp config.h /usr/include
6. 编译例子
- >~unpv13e/$ cd intro
- >~unpv13e/$ gcc daytimetcpcli.c -o cli -lunp
编译成功则大功告成。