libevent是个事件驱动库,网上关于它的文章很多,这里就不再多说了。如果你搜到这篇东西,一定是想要在你的ubuntu10.10下面安装/使用它,或者说你遇到了问题。这个问题很可能就是你遇到了段错误。通过gdb调试后发现问题出在libevent中。然后你很无奈。其实问题不在libevent上,而在安装libevent的过程本身。我是采用源码的方式安装的libevent。http://monkey.org/~provos/libevent/在这里下载到你想要的版本后,转到你下载文件保存的目录,tar -xzvf 你下载到的文件名。然后进入解压出来的那个目录。之后./configure,然后make,sudo make install。顺利的话你就安装完成了,看起来很平常。但是当你使用它的时候就会出现问题。这很可能是段错误。问题的原因我现在就开始解释。ubuntu10.10默认会安装一个libevent1.4.2版本的libevent在你的系统里,这个版本的libevent在/usr/lib目录下有个libevent.so.2的文件。而你用源码安装的libevent的so文件保存在/usr/local/lib目录下,这样当你在用编译器选项-levent的时候,系统就在/usr/include,/usr/lib,/usr/local/lib三个目录下寻找libevent.so这样的文件作为连接时候用到的目标文件。问题就出在这里,系统首先找到的是/usr/lib/libevent.so.2这个文件而不是你安装的/usr/local/lib这个目录下这个版本对应的目标文件,于是连接产生的程序就会读取一段不应该读到的内存,于是bug就产生了。因此,在安装libevent之前,首先确保你的系统里是否已经安装了其它版本的libevent,如果发现有安装,那么果断卸载之。 更新:libevent的official site上的document说struct event需要分配到heap(堆区)。如果分配到stack,当临时变量神马的用多了会导致很多意想不到的问题,博主这两天就深受其害。