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