linux 下运行libnids,libnids出错
2017/03/28
因為246上一般用的東西都比較多了,就直接使用了這部分。
但當(dāng)初編譯的時候也不是我弄得。今天想試一下libnids的編程。
編譯錯誤
在網(wǎng)上查了下,說是版本不夠的原因,那我也不能重新編譯了,畢竟還有別人說不定用的好好的。
gcc -o test test.c -lnids -lpcap -lnet -lgthread-2.0
其實是一些軟件庫沒有鏈接好,回來得明白這部分的依賴關(guān)系。
我他媽真的是日了狗,我在241上,這么干凈的機器上安裝,然后失敗了。
241上
這部分的錯誤我也不知道是為什么。
gcc -o test test.c -lnids -lpcap -lnet -lgthread-2.0 -lglib-2.0
編譯通過,但程序提示錯誤。
libnet
但是這個庫的確是存在的,我試試重啟下,讓他重建下緩存。
http://blog.csdn.net/david_xtd/article/details/7625626/
(這個網(wǎng)站介紹了這部分錯誤的原因)
解決方案
按照這個方法,可以執(zhí)行了。
應(yīng)該就是因為,這部分的代碼,放在了/usr/local/lib/所以查不到。
現(xiàn)在編譯是通過了,但是還是跟原來一樣,沒辦法運作。
感覺一直沒有進(jìn)入這個回調(diào)函數(shù)。
就是很多功能都實現(xiàn)了,但是就是沒顯示。!?
最后是因為那部分源碼有錯誤。
(源碼沒有錯誤,只需要把校驗和的函數(shù)運行即可。
但是要注意的就是,那個穿進(jìn)去的東西是一個指針,所以一定要自己分配內(nèi)存才可以,但這一直能說在當(dāng)前系統(tǒng)下好使,好在自己一直用的是centos7,沒出現(xiàn)過什么問題。)測試的時候,一定要注意的就是一定要找一個雙向流的數(shù)據(jù)包。
1、初始化部分,把第一行nids_exit()注釋掉。
2、tcp.c里740行左右,有一部分的校驗和檢查函數(shù),注釋掉就可以。
本來,我看別人都是直接用一個函數(shù)來關(guān)閉這個校驗和功能,但是不知道為什么,這個機器就是不好使。
那個系統(tǒng)也是這樣做的。但是就是不好使。
這部分,我回來可以抽出來時間,這個庫的源碼,好好讀讀。
好像他跟linux的協(xié)議棧很像。
現(xiàn)在是沒有時間了。
2017/04/29
今天看這個也是很費勁,主要網(wǎng)上的內(nèi)容不多,大部分就是抄別人的。
而且, 都是很老的內(nèi)容了。機器不一樣,系統(tǒng)不一樣都導(dǎo)致各種不好使。
自己也是廢了很大的勁,主要是從源碼一點一點檢查。
不過這樣也讓我有了很多理解。
后續(xù),有了新內(nèi)容會繼續(xù)添加。
2018/3/2
今天在自己的虛擬機上安裝libnids,又出現(xiàn)了錯誤,錯誤信息是無法連接libnet的一函數(shù)。
經(jīng)過查看才知道自己下載的這個libnet的版本太老了。1.1.2.1吧好像是。已經(jīng)十幾年了。
這次把所有的代碼注釋部分都清除了,也就是自己原來修改的部分,已經(jīng)能夠正常運行。
總結(jié)
以上是生活随笔為你收集整理的linux 下运行libnids,libnids出错的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 手机 wlan信号桥,手机W
- 下一篇: 在linux文件共享接口,入坑Linux