2012-03-13 52 views
0

我們正在使用Dell SUSE Enterprise。沒有選擇。無法在Dell SUSE Enterprise下編譯libpcap

SUSE在zypper存儲庫中沒有libpcap-devel或類似的東西。

我已經從GIT存儲庫下載並安裝了libpcap。 libpcap需要編譯flex和bison。 flex版本2.5.35和野牛一樣在回購中。

但是,我不能得到任何使用libpcap-devel編譯的問題。 autoconf的腳本上嘗試在libpcap.so鏈接失敗:

configure:3633: $? = 1 
configure:3636: checking whether we are using the GNU C++ compiler 
configure:3665: g++ -c conftest.cpp >&5 
configure:3672: $? = 0 
configure:3689: result: yes 
configure:3698: checking whether g++ accepts -g 
configure:3728: g++ -c -g conftest.cpp >&5 
configure:3735: $? = 0 
configure:3836: result: yes 
configure:3861: checking dependency style of g++ 
configure:3952: result: gcc3 
configure:3981: checking for a BSD-compatible install 
configure:4049: result: /usr/bin/install -c 
configure:4067: checking for pcap_lookupdev in -lpcap 
configure:4102: gcc -o conftest -g -O2 conftest.c -lpcap >&5 
/usr/local/lib/libpcap.so: undefined reference to `pcap_lex' 
collect2: ld returned 1 exit status 
configure:4109: $? = 1 
configure: failed program was: 

運行在歸檔處,我發現:

$ nm /usr/local/lib/libpcap.so | grep pcap_lex 
       U pcap_lex 
當然

,pcap_lex是真正從函數yylex使用#define。

我不在這裏。我試圖弄清楚爲什麼這些東西沒有在Suse上正確編譯。有人有線索嗎?

回答

0

不知何故,無論你做了什麼編譯libpcap導致它不能正確構建。

沒有:

  1. config.log文件從libpcap的目錄;
  2. 來自libpcap目錄的Makefile;
  3. 構建在libpcap目錄中的輸出;

將無法​​確定這是什麼,因此將無法修復該進程,以便libpcap正確構建。我有從來沒有看到在Linux上構建的libpcaps的問題,所以我不能確定這裏發生了什麼。 (如果您提供此信息,您將不僅幫助您自己,還幫助那些報告過類似問題但拒絕回答類似問題並因此未提供任何有關信息的人員。)

+0

雖然技術上是正確的,但更好的方法是從http://www.tcpdump.org/下載libpcap 1.2.1源代碼。該版本編譯沒有問題。所以真正的答案是不要從github隨機發布。 – vy32 2012-03-14 00:00:15

+0

那麼,至少有一些其他報告這些問題的人報告了從tcpdump.org下載的標準版本的問題,所以這不一定是有保證的修復。 – 2012-03-14 05:52:57

+0

或者在我的情況下,使用tcpdump.org文件成功構建了該庫,但是當我嘗試將其鏈接到項目時,出現此錯誤。 – 2016-01-05 21:13:15