libev-4.15 无法在 OSX 10.8 上编译

Posted

技术标签:

【中文标题】libev-4.15 无法在 OSX 10.8 上编译【英文标题】:libev-4.15 doesn't compile on OSX 10.8 【发布时间】:2013-05-21 01:36:27 【问题描述】:

我正在尝试从 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

FWIW,相同的配置在 CentOS5.6 上编译良好。

【问题讨论】:

【参考方案1】:

原来问题在于 OSX 上“ev.h”中声明的“EV_ERROR”与“/usr/include/sys/event.h”中声明的冲突。

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

【讨论】:

以上是关于libev-4.15 无法在 OSX 10.8 上编译的主要内容,如果未能解决你的问题,请参考以下文章

在 osx 10.8 上安装 mysql-python 时找不到“my_config.h”文件

OSX 10.8 中的 AVKit

OSX 10.8 服务器和 nginx:如何让 nginx 站点并排显示?

OSX 10.6 上的 Qt5

将 mac osx 10.8 上的 GDB 从 6.3 更新到 7.*

pkg-config 和 OSX 10.8,正确的 PKG_CONFIG_PATH?缺少 .pc 文件?