由于这是该书运行的第一个程序,以此笔记记录如何运行该书上的代码,以及初次运行所发生的错误。
第一步:参照read me的步骤逐步照做。
cd unpv12e
其中,在编译基本库libfree时出错,
gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o in_cksum.o in_cksum.c
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:61: error: argument ‘size’ doesn’t match prototype
/usr/include/arpa/inet.h:65: error: prototype declaration
make: *** [inet_ntop.o] Error 1
inet_ntop.c第61行 size_t size ->改成 socklen_t size)
PS:虽然不知道为什么要这么改,但是看起来好神奇的样子。
应该是将inet_ntop.c中的对象改成和.inet.h中的对象对应,等下可详细了解。
PS2:查看/usr/include/arpa/inet.h的源码可知,确实在inet.h第26行定义了socklen_t,为什么知道这么改呢?不过貌似inet.h中只定义了这一个对象,改成别的对象也不可能。
再次编译
Fri Jan 23 16:16:43 2015