當前位置:編程學習大全網 - 源碼下載 - libnfnetlink怎麽安裝

libnfnetlink怎麽安裝

Linux下有名的防火墻iptables/netfilter就存在這樣的問題,結構體sk_buff在2.6版本內核升級中進行了修改,但網上大多資料還是關於以前版本的,這都不是主要問題,我覺

得主要問題是將引起用戶編寫的軟件不能通用,鬼知道將要部署的服務器linux內核版本是多少啊。

當然,壹批優秀的人將包過濾模塊從內核態遷移到用戶態編寫程序,使用libipq和ip_queue等實現,這樣能夠極大的方便用戶代碼的調試,不然在內核中寫程序,調試時出現壹>點錯誤可能就死機了。不得不暴力重啟看log...

回到正題,最初我以為libipq已經能夠很好的解決我的問題了,沒想到使用libipq編寫代碼會出現: field 'in' has incomplete type, 著實讓人郁悶,最初還以為是linux/in.h頭文件沒有被保護到程序中,使用#define __KERNEL明確的開啟選項後依然不行,這都不是重點,重點是2.6.14以後的內核版本好像出了壹個新的庫代替此功能,不清楚是原先

庫德升級還是新德庫,反正就是應該用libnetfilter_queue,而不應該使用libipq

於是很自然的來到網站:/s/blog_4b3bae23010081fg.html

博客中提到*.pc配置了編譯和鏈接路徑信息。於是手動設置

export PKG_CONFIG_PATH=path, (path路徑下面是*.pc)

然後再壹次./configure,居然可以了,表示不懂什麽原因,有空好好研究以下linux的編譯鏈接機制。

接著就happy的make壹下,然後sb了,make出錯了:

libnetfilter_queue.c:32:39: fatal error: libnfnetlink/libnfnetlink.h: No such file or directory

然後find壹下libnfnetlink.h, NND,只有libnfnetlink的解壓目錄下面有libnfnetlink.h,所以libnetfilter_queue肯定是找不到了,不過libnfnetlink中make幹嘛去了呢?

於是我就特sb的將libnfnetlink 目錄下的include下得libnfnetlink目錄復制到/usr/include中,繼續make,

/usr/bin/ld: cannot find -lnfnetlink

錯誤變了,換庫找不著了,是不是意味著通過了編譯,然後找不到庫,鏈接失敗.

然後趕緊:

locate libnfnetlink

/usr/lib/libnfnetlink.so.0

/usr/lib/libnfnetlink.so.0.2.0

lib下是存在庫德,是不是名字不對呢?試著修改名字:

ln -s /usr/lib/libnfnetlink.so.0 /usr/lib/libnfnetlink.so

然後make,成功了,真是非常優秀啊,下面接下來試試編譯libnetfilter_queue測試代碼.

[Supplement]

接下來在往上找了壹個測試程序,然後使用下列命令編譯,

gcc test2.c -lnetfilter_queue

依舊報錯,我的那個神啊,能不能又壹次沒有錯得啊~錯誤如下:

/usr/bin/ld: cannot find -lnetfilter_queue

netfilter_queue庫依然找不見,行不行啊,make到底幹了啥東西啊~

於是到libnetfilter_queue源目錄下找到相關的*.so或者*.a壹並考到/usr/lib下。

cp -r libnetfilter_queue-1.0.0/src/.libs/* /usr/lib/

  • 上一篇:QQ涓婃渶閰风殑N鍊嬬恫鍚嶆湁鍝簺锛焲淘寶客返利網是什麽意思
  • 下一篇:
  • copyright 2024編程學習大全網