2017-04-10 2 views
1

Linux에서 내 Clion 프로젝트에 pcap을 사용하고 싶습니다. 나는 libpcap의-DEV 설치 :cmake : pcap 함수에 대한 정의되지 않은 참조

sudo apt-get install libpcap-dev 

을하지만 내가 좋아하는 PCAP 기능을 포함하는 모든 파일을 컴파일하려고 : 나는 cmake 오류가

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

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

    dev = pcap_lookupdev(errbuf); 
    if (dev == NULL) { 
     fprintf(stderr, "Couldn't find default device: %s\n", errbuf); 
     return(2); 
    } 
    printf("Device: %s\n", dev); 
    return(0); 
} 

:

CMakeFiles/main.cpp.o: In function `main': 
/main.cpp:8: undefined reference to `pcap_lookupdev' 

내가하지 않은 전에 cmake 사용. Cmake 파일 : 당신은 포함하고 CMakeLists.txt에 FindPCAP.cmake 파일을 사용해야합니다

cmake_minimum_required(VERSION 3.7) 
project(mypr) 

set(CMAKE_CXX_STANDARD 11) 

set(SOURCE_FILES main.cpp) 
add_executable(mypr ${SOURCE_FILES}) 
+0

. CMake 없이는 똑같은 오류가 발생합니다. 적절한 ['target_link_libraries()'] (https://cmake.org/cmake/help/latest/command/target_link_libraries.html) 명령이 필요합니다. – Angew

답변

1

. 여기에 하나입니다

https://github.com/bro/cmake/blob/master/FindPCAP.cmake 프로젝트의 소스 디렉토리에 FindPCAP.cmake을 넣고에 CMakeLists.txt을 변경하려고 : 당신은 PCAP에 연결하지 않을

cmake_minimum_required(VERSION 3.7) 
project(mypr) 

set(CMAKE_CXX_STANDARD 11) 

include(FindPCAP.cmake) 

set(SOURCE_FILES main.cpp) 
add_executable(mypr ${SOURCE_FILES}) 
target_link_libraries(mypr ${PCAP_LIBRARY}) 
+1

감사합니다! 하나의 주석 : (FindPCAP.cmake) –

+0

직접'include (FindPCAP.cmake) '대신'find_package (PCAP REQUIRED)'를 사용하는 것이 더 합리적이지 않습니까? –

+0

기본 cmake 경로에 FindPCAP.cmake가있는 경우 예입니다. –

관련 문제