参考文章:http://blog.chinaunix.net/uid-23242876-id-2480261.html
1.在tcpclisrv/下make 出错tcpservpoll01.c:13: error: ‘OPEN_MAX’ undeclared (first use in this function)
解释:
运行 grep -r "OPEN_MAX" ./
可见 ./tcpcliserv/tcpservpoll01.c: include <limits.h> /* for OPEN_MAX */ 输出.
但是,OPEN_MAX 在 /usr/inlude/limits.h 已经不存在了,根据参考帖里的信息,我也强烈的怀疑现在 /usr/include/linux/fd.h 和 /usr/include/linux/limit.h 里的 NR_OPEN 就是作者所说的 OPEN_MAX。
Solution 1: OPEN_MAX --> NR_OPEN, 连 #include <limits.h> 这句都不用更改
Solution 2: 在 unp.h 里面手动添加 #define OPEN_MAX 1024, 这个 1024 从上面所说 NR_OPEN 的值得到,
至于 #include <limits.h> 句嫌麻烦的可不删.
我采用的是solution2
2.在tcpclisrv/下make 出错
tcpservpoll01.c:28: error: ‘POLLRDNORM’ undeclared
解决方法:
在unp.h中添加如下定义:
<span style="font-size:18px;">#ifndef __x86_64_POLL_H
#define __x86_64_POLL_H
/* The rest seem to be more-or-less nonstandard. Check them! */
#define POLLRDNORM 0x0040
#define POLLRDBAND 0x0080
#define POLLWRNORM 0x0100
#define POLLWRBAND 0x0200
#define POLLMSG 0x0400
#define POLLREMOVE 0x1000
#define POLLRDHUP 0x2000
#endif</span>