2014-11-24 9 views
5

나는이 튜토리얼을 통해 이동하는 것을 시도하고있다PCAP 기능 "정의되지 않은 참조"

sudo apt-get install libpcap-dev 

및 지금까지 나는 다음과 같은 코드가 (파일 이름이 example_pcap.c입니다) : 내가 본 많은 질문에 따르면

#include <stdio.h> 
#include <pcap.h> 

int main(int argc, char *argv[]) { 
    char *dev, errbuf[PCAP_ERRBUF_SIZE]; 

    dev = pcap_lookupdev(errbuf); 

    return 0; 
} 

이미 그들은이를 사용하여 컴파일 말했다 :

gcc -lpcap example_pcap.c -o example_pcap 

난 여전히 다음과 같은 오류 얻을 그러나 명령 행의 마지막에

example_pcap.c:(.text+0x32): undefined reference to `pcap_lookupdev' 
+1

@NTN 1. 링커 오류는 일반적으로 관련이없는 참조를 헤더 파일 및 2. 오류 메시지는 ** "라이브러리를 찾을 수 없음"입니다. 문제는 라이브러리가 잘못된 위치에 있다는 것입니다. 소스 파일 다음에 * 있어야합니다. –

+0

오, 그래, 당신은 lib를 찾을 수있는 새로운 경로를 추가하는 -L/your/path /를 사용할 수있다 –

답변

12
+1

'gcc example_pcap.c -o example_pcap -lpcap'에서와 같이 (나는'-o ' a.out') – Jite

+0

이것은 효과가 있었지만 지금은 조금 혼란 스럽습니다. 나의 교과 과정의 일환으로 그들은 이미 나에게 파일을 주었다. 이제 make 파일은 -lpcap 매개 변수를 나머지 부분보다 먼저 갖습니다. 그들은 실수를 했습니까, 아니면 처음에 머물러있게 할 수있는 방법이 있습니까? –

+0

연결 중 ../build/idsniff gcc -lpcap -lpthread -o ../build/idsniff ../build/analysis.o ../build/dispatch.o ../build/main.o ../build /sniff.o ../build/sniff.o : 함수'sniff '에서 : /home/yahya/workspace/osCoursework/src/sniff.c:15 :'pcap_open_live'에 대한 정의되지 않은 참조 /home/yahya/작업 공간/osCoursework/src/sniff.c : 27 : 'pcap_next'에 대한 정의되지 않은 참조 /home/yahya/workspace/osCoursework/src/sniff.c:31 : 'pcap_geterr'에 대한 정의되지 않은 참조 –