pyhton gevent库安装的蛋疼问题

gevent库是python中的一个用于实现并发的库,python本身并发性能并不好,在gevent库的协助下,python并发性也能发挥的很好。于是安装gevent库成为python并发的一个必须需求。但是安装gevent库总是很多蛋疼,下面我说说那些蛋疼的事情:

gevent库是依赖于python的另外两个库的,libevent和greenlet,得先分别安装这两个库,安装这两个库的时候最好都使用最新的版本,否则太旧版本可能出现不兼容的问题,然后于是本机上之前已经安装过libevent库,在安装gevent的时候就需要指定自己安装的libevent库了,通过如下命令:

 在编译libevent时,指定./configure --prefix=/usr
 python setup.py build --libevent ../libevent-2.0.21-stable
ldd gevent-0.13.8-py2.7-linux-i686.egg-tmp/gevent/core.so用来查看加载的libevent库是否是自己安装的 
 
除了这个还有更蛋疼的问题,就是如果机器的版本不是很高的话可能编译错误,next变量未定义,
这个时候需要进行宏替换,把有next变量的宏展开,
 #define TAILQ_GET_NEXT(X) ((X)->next.tqe_next)
然后编译会带有警告,如果继续安装,能够安装成功,但是执行import gevent的时候会报错,TAILQ_FIRST不存在,这个是因为系统定义的冲突了,
 #if _EVENT_NUMERIC_VERSION >= 0x02000500语句给屏蔽了,这个时候需要把#define TAILQ_FIRST(head) ((head)->tqh_first)放到
#if _EVENT_NUMERIC_VERSION >= 0x02000500之前即可以
 
另外有解释为什么需要这么做的原因:

C 语言 implicit declaration of function 错误原因

关于 implicit declaration of function 一点经验之谈

用gcc编译c程序的时候 经常会出现
implicit declaration of function '...' 的warning

偶经过这几天的经验,发现主要有2种情况会产生这种warning

1   没有把函数所在的c文件生成.o目标文件
2   在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明

  

原文地址:https://www.cnblogs.com/hahawgp/p/3272194.html