2012-03-13 4 views
0

Dell SUSE Enterprise를 사용하고 있습니다. 선택의 여지가 없다.Dell SUSE Enterprise에서 libpcap을 컴파일 할 수 없습니다.

SUSE에는 libpcap-devel 또는 zypper 저장소와 비슷한 항목이 없습니다.

GIT 저장소에서 libpcap을 다운로드하여 설치했습니다. libpcap은 flex와 bison을 모두 컴파일해야합니다. flex 버전 2.5.35가 bison과 마찬가지로 repo에 있습니다.

그러나 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에서 정의 #입니다.

나는 여기에 내 머리가 아닙니다. 나는 왜이 물건이 수세에서 제대로 컴파일되지 않는지 알아 내려고하고있다. 아무도 단서가 있습니까?

답변

0

어떻게 든 libpcap을 컴파일하면 아무런 문제가 발생하지 않습니다.

없이 :

  1. libpcap의 디렉토리에서 config.log 파일;
  2. libpcap 디렉토리의 Makefile.
  3. libpcap 디렉토리에있는 빌드의 출력.

그 내용을 결정하는 것이 불가능하므로 libpcap이 올바르게 빌드되도록 프로세스를 수정할 수 없습니다. 나는 을 결코 가지고 있지 않다.은 리눅스에서 빌드 된 libpcaps에 관한 문제를 보았으므로, 여기서 무슨 일이 일어나고 있는지를 판단 할 수 없다.

(이 정보를 제공하면 유사한 문제를보고했지만 유사한 질문에 답하지 않으므로 문제의 정보를 제공하지 않았기 때문에 자신을 돕는 것입니다.)

+0

당신이 기술적으로 정확하다고해도 더 나은 접근 방법은 http://www.tcpdump.org/에서 libpcap 1.2.1 소스를 다운로드하는 것입니다. 그 버전은 문제없이 컴파일되었습니다. 따라서 진짜 대답은 github에서 무작위로 출시되는 것이 아닙니다. – vy32

+0

글쎄, 그 문제를보고 한 다른 사람들 중 적어도 일부는 tcpdump.org에서 다운로드 한 표준 릴리스의 문제점을보고하고 있었기 때문에 반드시 그런 수정이 필요한 것은 아닙니다. –

+0

또는 제 경우에는 tcpdump.org 파일을 사용하여 라이브러리를 성공적으로 빌드했지만 프로젝트에 링크하려고하면이 오류가 발생합니다. –