epoll的安裝和除錯

2021-04-13 04:59:17 字數 1657 閱讀 8062

又是一件折騰了我一天的事情。其實epoll**早就會寫了,lib裡面早就支援了epoll,但一直停留在「支援」階段。實際上卻是沒有用起來過。公司裝了一台機器,裡面有epoll.h和epoll.a,但核心卻不是2.6,所以機器上能編譯但不能執行。另外一台機器公升級了核心,但卻怎麼也找不到epoll.h和epoll.a。所以鬱悶了很久,於是下定決心,要把這個問題搞個清楚。終於,在向東博士的幫助下,把問題解決了。

其實網上也有很多的介紹,例如

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: 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,其它地方都有的,不過我也懶得找了)。

終於程式跑起來了……

gdb和gdbserver的安裝和除錯

嵌入式linux的gdb除錯環境由host和target兩部分組成,host端使用arm linux gdb,target board端使用gdbserver。除錯時,應用程式在嵌入式目標系統上執行,而gdb除錯在host端。gdb除錯的時候,pc機上的gdb向開發板上的gdbserver發出命令,...

tensorflow的快捷安裝和除錯

深度學習技術一直在發展,但是caffe的更新跟不上進度,也許是維護團隊的關係 caffe團隊成員都是業餘時間在維護和更新。導致的結果就是很多新的技術在caffe裡用不了,比如rnn,lstm,batch norm等。當然這些現在也算是舊的東西了,也許caffe已經有了,我已經很久沒有關注caffe的...

Select和epoll的區別

當乙個節點和多個節點建立連線時,如何高效的處理多個連線的資料,下面具體分析兩者的區別。1.select函式 函式原型 int select int nfds,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout ...