libpcap 설치 및 사용중 문제
글쓴이: 익명 사용자 / 작성시간: 토, 2002/05/11 - 1:53오후
2002년 5월 10일자 libpcap을 tcpdump.org사이트로부터 다운받아 아래와 같이 설치하였습니다.
./configure
make
make install
[root@localhost libpcap-2002.05.10]# make install [ -d /usr/local/lib ] || \ (mkdir -p /usr/local/lib; chmod 755 /usr/local/lib) /usr/bin/install -c -m 644 libpcap.a /usr/local/lib/libpcap.a ranlib /usr/local/lib/libpcap.a [ -d /usr/local/include ] || \ (mkdir -p /usr/local/include; chmod 755 /usr/local/include) /usr/bin/install -c -m 644 ./pcap.h /usr/local/include/pcap.h /usr/bin/install -c -m 644 ./pcap-namedb.h \ /usr/local/include/pcap-namedb.h [ -d /usr/local/include/net ] || \ (mkdir -p /usr/local/include/net; chmod 755 /usr/local/include/net) /usr/bin/install -c -m 644 ./bpf/net/bpf.h \ /usr/local/include/net/bpf.h [ -d /usr/local/man/man3 ] || \ (mkdir -p /usr/local/man/man3; chmod 755 /usr/local/man/man3) /usr/bin/install -c -m 644 ./pcap.3 \ /usr/local/man/man3/pcap.3 [root@localhost libpcap-2002.05.10]# 그런데, libpcap을 사용하여 프로그래밍을 하려고 하면 정의되지 않은 참조라며 계속 에러가 뜨네요. #include <pcap.h> #define PROMISCUOUS 1 static pcap_t *pd; int main(int argc, char *argv[]) { char ebuf[PCAP_ERRBUF_SIZE]; static char *device; device = pcap_lookupdev(ebuf); } [root@localhost /root]# gcc dump.c /tmp/ccCblX5s.o In function `main' /tmp/ccCblX5s.o(.text+0x14) undefined reference to `pcap_lookupdev' collect2 ld returned 1 exit status [root@localhost /root]# 조언 부탁드립니다.
Forums:
Re: libpcap 설치 및 사용중 문제
보니까 함수에대한 참조를 할 수 없다고 하는 메시지인데 이는 보통 라이
브러리를 지정하지 않아서 나오는 에러입니다. 보통 -L옵션으로 라이브러
리 경로를 지정하고 -l옵션으로 라이브러리 이름을 지정하는데 헤더파일
이 pcap.h였다면 보통 -L/usr/lib/pcap -lpcap 이런 컴파일 옵션을 줘야
할겁니다. 아마 님의 컴에는 이 경로가 다를지도 모릅니다. 잘 확인하시
고 해보십시오. 거기 메뉴얼에 자세히 보면 나오는 경우가 또 대부분입니
다. 헌데 pcap이 무슨 프로그램이죠? 알려주세요.. ^^
Re^2: libpcap 설치 및 사용중 문제
답변주셔서 감사합니다. 다시 한 번 컴파일 시도해봐야 겠네요^^*
- Libpcap(Portable Packet Capturing Library)
패킷을 캡쳐하기 위한 도구로는 BPF(Berkeley Packet Filter), DLPI,
NIT, SNOOP, SNIT, SOCK_PACKET, LSF(Linux Socket Filter), drain등 각
운영체제별로 다양한 도구가 있다. 하지만 여러분이 운영체제별로 패킷
을 캡쳐하기 위한 위한 코드를 별도로 구성해야 한다면 시작하기도 전에
포기할지도 모른다. 하지만 이 모든 도구들을 수용하는 Portable한 API
가 있는데 이것이 바로 libpcap이다.
라이브러리 사용자는 운영체제의 각기 다른 datalink로의 접근 방법에 상
관없이 libpcap을 이용하여 소기의 목적을 달성할 수 있다. libpcap을 이
용한 대표적인 툴이 바로 tcpdump이다.
Re^3: 옵셥을 주어도 마찬가지입니다.
-l, -L 옵션을 주어도 같은 컴파일 에러를 출력하네요. 다른 방법은 없을까요?
혹시 위에 써 있는 옵션 그대로 베끼지는 않으셨겠지요?
설치된 위치에 맞게 쓰셔야겠죠? )
-L/usr/local/lib -I/usr/local/include -lpcap
오병현 octphial _at_ postech.ac.kr
댓글 달기