libev-4.15 无法在 OSX 10.8 上编译

libev-4.15 doesn't compile on OSX 10.8

本文关键字:编译 OSX libev-4      更新时间:2023-10-16

我正在尝试从libev-3.8(在OSX 10.8上编译良好)升级到libev-4.15,并得到以下错误:

third_party/libev-4.15/ev.h:234: error: expected identifier before numeric constant
third_party/libev-4.15/ev.h:234: error: expected `}' before numeric constant
third_party/libev-4.15/ev.h:234: error: expected unqualified-id before numeric constant
third_party/libev-4.15/ev.h:842: error: expected declaration before ‘}’ token

链接到ev.h: http://cvs.schmorp.de/libev/ev.h?revision=1.171&view=markup

系统配置:

checking host system type... i386-apple-darwin12.3.0
checking target system type... i386-apple-darwin12.3.0
checking for ld used by gcc... /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
checking if the linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) is GNU ld... no
checking how to convert i386-apple-darwin12.3.0 file names to i386-apple-darwin12.3.0 format... func_convert_file_noop
checking how to convert i386-apple-darwin12.3.0 file names to toolchain format... func_convert_file_noop
checking for /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld option to reload object files... -r

原来问题是OSX上"EV_ERROR"声明在" ev_h "与"/usr/include/sys/event.h"声明的EV_ERROR冲突。

作为修复,我必须转发声明我使用的ev变量,而不是在我的一个源文件中直接包括ev.h。