簡體   English   中英

cygwin下python如何搭建gevent?

[英]How do I build gevent in python under cygwin?

我想在各種環境中始終如一地使用 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 構建了 static 個庫(例如 /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 build.dll 而不是 .a,但 libevent 的 Makefile 實際上沒有 aa 目標,我不清楚所使用的抽象如何必須改變才能實現這一點。

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

你能試試http://code.google.com/p/gevent/downloads/list的測試版嗎?

它不需要任何外部依賴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM