epoll的安装和调试

简介:

又是一件折腾了我一天的事情。其实epoll代码早就会写了,lib里面早就支持了epoll,但一直停留在“支持”阶段。实际上却是没有用起来过。公司装了一台机器,里面有epoll.h和epoll.a,但核心却不是2.6,所以机器上能编译但不能运行。另外一台机器升级了内核,但却怎么也找不到epoll.h和epoll.a。所以郁闷了很久,于是下定决心,要把这个问题搞个清楚。终于,在向东博士的帮助下,把问题解决了。

其实网上也有很多的介绍,例如 http://www.xmailserver.org/linux-patches/nio-improve.html
从网上下载了一个 epoll-lib-0.11.tar.gz ,把它放到已经升级内核到2.6的Redhat9机器,解开。然后进去make,发现没有mkdep……也懒得管了,直接来一个:make lib/libepoll.a
跳过了mkdep这一步,但还是出错:
./src/epoll.c: In function `epoll_create':
./src/epoll.c:28: error: `__NR_epoll_create' undeclared (first use in this function)
./src/epoll.c:28: error: (Each undeclared identifier is reported only once
./src/epoll.c:28: error: for each function it appears in.)
./src/epoll.c: In function `epoll_ctl':
./src/epoll.c:30: error: `__NR_epoll_ctl' undeclared (first use in this function)
./src/epoll.c: In function `epoll_wait':
./src/epoll.c:32: error: `__NR_epoll_wait' undeclared (first use in this function)
百思不得其解……向东博士提说:把内核的源代码ln 到/usr/src/linux目录下。这才恍然大悟。于是:
ln -s /usr/src/linux-2.6.14.2 /usr/src/linux

哈哈,这下编译通过了。赶快make install(其实我是自己手工把.h和.lib复制到相应目录,那些man的东西全部都不管了)。

然后就开始编译自己的代码了。谁知道到了链接这一步,又出问题了:
/usr/lib/gcc/i686-pc-linux-gnu/4.0.2/../../../../i686-pc-linux-gnu/bin/ld: cannot find /lib/libpthread.so.0
这是晕死,还以为是自己的gcc装错了,于是重新装了一次gcc。但还是出现同样的问题。
又是向东博士提示:
ln /lib/i686/libpthread-0.10.so /lib/libpthread.so.0
链接也都通过了。

也未免高兴得太早,轮到运行出错了:
/lib/libgcc_s.so.1: version `GCC_3.3' not found (required by /usr/lib/libstdc++.so.6)
……这次不用别人提示了,马上到处找找哪里还有libgcc_s.so.1。于是我把/home/cyt/gcc-4.0.2/objdir/gcc/libgcc_s.so.1复制到了/lib下面。(其实就是我make gcc的那个目录下面找到的libgcc_s.so.1,其它地方都有的,不过我也懒得找了)。
终于程序跑起来了……

目录
相关文章
|
6月前
|
API C++
socket编程之常用api介绍与socket、select、poll、epoll高并发服务器模型代码实现(1)
前言   本文旨在学习socket网络编程这一块的内容,epoll是重中之重,后续文章写reactor模型是建立在epoll之上的。
80 0
|
6月前
|
监控 安全 Linux
socket编程之常用api介绍与socket、select、poll、epoll高并发服务器模型代码实现(3)
高并发服务器模型-poll poll介绍   poll跟select类似, 监控多路IO, 但poll不能跨平台。其实poll就是把select三个文件描述符集合变成一个集合了。
77 0
|
6月前
|
监控 Linux
epoll 的用法
【4月更文挑战第16天】epoll 通过改进的接口设计,避免了用户态 - 内核态频繁的数据拷贝,大大提高了系统性能。在使用 epoll 的时候,我们一定要理解条件触发和边缘触发两种模式。
|
6月前
epoll分析
epoll分析
|
6月前
|
Windows
windows iocp适配epoll
windows iocp适配epoll
100 0
|
消息中间件 网络协议 安全
【Hello Linux】多路转接之 epoll
【Hello Linux】多路转接之 epoll
59 0
|
Linux
linux开发各种I/O操作简析,以及select、poll、epoll机制的对比
linux开发各种I/O操作简析,以及select、poll、epoll机制的对比
283 1
linux开发各种I/O操作简析,以及select、poll、epoll机制的对比
|
Linux
Mosquitto-1.5.0开始源码新增了epoll机制,如何编译实现?
Mosquitto-1.5.0开始源码新增了epoll机制,如何编译实现?
260 0
彻底学会使用epoll(四)——ET的写操作实例分析
首先,看程序四的例子。 l 程序四 点击(此处)折叠或打开 #include unistd.
1096 0