2017-09-24 16 views
-1

Für meine Aufgabe muss ich den C/C++ Code mit dem libpcap ausführen. Ich benutze CLion 1.2. Wenn ich versuche, den Test-Code auszuführen, erhalte ich die NachrichtenPCAP funktioniert nicht in CLion

undefined Verweis auf 'pcap_open_offline'

undefined Verweis auf 'pcap_next'

Hier ist der Code ist

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

const u_char *packet; 


int main() { 


    char errbuf[PCAP_ERRBUF_SIZE]; 
    pcap_t *handle = pcap_open_offline("/home/alex/Downloads/priklad.pcap", errbuf); 

    struct pcap_pkthdr packet_header; 
    packet = pcap_next(handle, &packet_header); 


    return 0; 
} 

Ich habe versucht, Verknüpfung der Bibliothek wie diskutiert here, aber es hat nicht geholfen. Ich lud die Bibliothek mit dem Befehl

sudo apt-get libpcap-dev

Aktuelle CMakeList.txt installieren:

cmake_minimum_required(VERSION 3.3) 
project(PKS1) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

SET(GCC_COVERAGE_LINK_FLAGS "-lpcap") 

SET(CMAKE_MODULE_PATH "/home/alex/projects/ClionProjects/PKS1/") 


include(FindPCAP) 
find_package(PCAP) 

set(SOURCE_FILES main.c) 
add_executable(PKS1 ${SOURCE_FILES}) 
target_link_libraries(PKS1 ${usr/include}) 

Meine Frage ist, was mache ich falsch? Wo befindet sich die Bibliothek? Wie finde ich es und verbinde es korrekt, ohne jedes Mal mit gcc zu kompilieren?

Antwort

0

Sie verknüpfen nie mit libpca.

Ihre Linie ändern:

target_link_libraries(PKS1 ${usr/include}) 

zu

target_link_libraries(PKS1 ${PCAP_LIBRARY}) 

Vielleicht möchten Sie auch ändern:

find_package(PCAP REQUIRED) 

, um während des Laufes von cmake auf Fehler aus statt während des Kompilierschritts, wenn libpcap nicht gefunden werden kann.