Unix 网络编程 卷 1 源码编译

编译源代码遇到的问题

cd ../libfree
make

出现如下错误

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:56:1: error: conflicting types for 'inet_ntop'
inet_ntop(af, src, dst, size)
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arpa/inet.h:77:13: note:
      previous declaration is here
const char      *inet_ntop(int, const void *, char *, socklen_t);
                 ^
1 error generated.
make: *** [inet_ntop.o] Error 1

错误原因:

书中源码中 inet_ntop 函数的 size 参数是 size_t 类型,而头文件里参数类型是 socklen_t

解决办法:size_t 改成 socklen_t