我用 Mac 编译这个源码的时候,只有 Libgai 这个包编译错误,其他都可以编译,之所以出现:
Undefined symbols for architecture x86_64:
"_Bind", referenced from:
_main in tcpserv03-11de6f.o
"_Close", referenced from:
_main in tcpserv03-11de6f.o
"_Fork", referenced from:
_main in tcpserv03-11de6f.o
"_Listen", referenced from:
_main in tcpserv03-11de6f.o
"_Signal", referenced from:
_main in tcpserv03-11de6f.o
"_Socket", referenced from:
_main in tcpserv03-11de6f.o
"_err_sys", referenced from:
_main in tcpserv03-11de6f.o
"_sig_chld", referenced from:
_main in tcpserv03-11de6f.o
"_str_echo", referenced from:
_main in tcpserv03-11de6f.o
ld: symbol(s) not found for architecture x86_64
是因为你在编译的时候,没有加上 -lunp,当然首先必须编译出这个静态库文件,一般在编译 libfree 这个最基本的库之后就能编译出 unp.a(在上一层目录生成),然后就可以了.至于其他的 libroute 编译不出来,其实关系不大(大概好像是说是否支持 BSD4.8),主要 libfree 能编译出来,那么 unp.a 就可以编译出来了.
我用 CentOS 7 编译的时候,没有出现问题,连 Mac 编译不出来的 libgai 都可以编译出来,Mac 会出现一些意想不到的麻烦,网上资料也少,除非 google 还能找到一些,用 Linux 还是比较好.