如何在cygwin下的python中构建gevent?

Posted

技术标签:

【中文标题】如何在cygwin下的python中构建gevent?【英文标题】:How do I build gevent in python under cygwin? 【发布时间】:2012-04-09 19:42:06 【问题描述】:

我想在各种环境中始终如一地使用 python。其中一种环境是cygwin。我想使用的组件之一是 gevent (http://www.gevent.org/intro.html)。在 cygwin 下,我运行了 python 2.7(在本地构建,这里描述了一行更改,这是构建它所必需的:http://www.gossamer-threads.com/lists/python/python/976956)。

gevent 需要 libevent (http://libevent.org/)。

libevent 似乎在 cygwin 下构建得很好(./configure && make && make install)。

但是,在构建 gevent (pip install gevent) 时,它会失败,因为 libevent 构建了静态库(例如 /usr/local/lib/libevent.a)并且 gevent 构建需要共享库。因此:

gcc -shared -Wl,--enable-auto-image-base build/temp.cygwin-1.7.13-i686-2.7/gevent/core.o -L/usr/local/lib/python2.7/config -levent -lpython2.7 -o build/lib.cygwin-1.7.13-i686-2.7/gevent/core.dll

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -levent

同时,如果我尝试让 gevent 静态链接(CFLAGS='-static' pip install gevent),-levent 仍然失败,以及许多关于取消引用类型双关指针将如何破坏严格别名规则和一些警告其他 ld 失败:

gevent/core.c:21835:警告:取消引用类型双关指针会破坏严格的别名规则

....
gevent/core.c:21836: warning: dereferencing type-punned pointer will break strict-aliasing rules

gcc -shared -Wl,--enable-auto-image-base -static build/temp.cygwin-1.7.13-i686-2.7/gevent/core.o -L/usr/local/lib/python2.7/config -levent -lpython2.7 -o build/lib.cygwin-1.7.13-i686-2.7/gevent/core.dll

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -levent

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -lpython2.7

...所以...

我想我需要告诉 libevent 构建 .dll 而不是 .a,但 libevent 的 Makefile 实际上并没有 .a 目标,而且我不清楚要如何更改所使用的抽象来完成此操作。

那么,退一步:如何在cygwin下的python 2.7下安装gevent?

【问题讨论】:

【参考方案1】:

您可以尝试http://code.google.com/p/gevent/downloads/list 的测试版吗?

它不需要任何外部依赖。

【讨论】:

这似乎已正确构建和安装。谢谢! (这个测试版离稳定版还有多远?)

以上是关于如何在cygwin下的python中构建gevent?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 cygwin gcc build 中使用在 VC++ 下构建的库?

如何在 Cygwin 上从 CPAN 安装 Net::SSH2

Win7/cygwin下的codesourcery工具链找不到一些文件

如何使用 cygwin 在 Windows 上构建 zeromq?

如何在windows中使cygwin构建程序使用windows路径

无法在 Cygwin 上安装 python 密码学