2014-11-24 11 views
5

Ich versuche, dieses Tutorial zu gehen: http://www.tcpdump.org/pcap.htmlPcap Funktionen "undefined reference" haben

Jetzt habe ich pcap installieren (Code-Hinweise und das alles funktioniert) mit:

sudo apt-get install libpcap-dev 

und so weit ich den folgenden Code (Dateiname ist example_pcap.c) haben:

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

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

    dev = pcap_lookupdev(errbuf); 

    return 0; 
} 

nach vielen Fragen, die ich gesehen habe bereits sagten, dass sie es mit diesem kompilieren:

gcc -lpcap example_pcap.c -o example_pcap 

aber ich bekomme immer noch die folgende Fehlermeldung:

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

@NTN 1. Linker Fehler sind in der Regel nichts zu tun Header-Dateien und 2. die Fehlermeldung ist ** nicht ** "Bibliothek nicht gefunden". Das Problem ist, dass die Bibliothek an der falschen Stelle ist - sie sollte * nach * der Quelldatei sein. –

+0

Oh ja, du könntest -L/your/pfad/benutzen um einen neuen Pfad zu locate lib hinzuzufügen –

Antwort

12

Verschieben -lpcap zum Ende der Befehlszeile

Siehe Why does the order in which libraries are linked sometimes cause errors in GCC?

+1

Wie in 'gcc example_pcap.c -o beispiel_pcap -lpcap' (Ich habe -o hinzugefügt, um eine ausführbare Datei mit einem besseren Namen als' a.out') – Jite

+0

Das hat funktioniert aber jetzt bin ich etwas verwirrt. Als Teil meiner Kursarbeit haben sie mir bereits die Makefile gegeben. Jetzt hat die make-Datei den -lpcap-Parameter VOR dem Rest. Haben sie einen Fehler gemacht oder gibt es einen Weg, um sicherzustellen, dass es am Anfang bleibt? –

+0

Verknüpfung ../build/idsniff gcc -lpcap -lpthread -o ../build/idsniff ../build/analysis.o ../build/dispatch.o ../build/main.o ../build /sniff.o ../build/sniff.o: In der Funktion "sniff": /home/yahya/workspace/osCoursework/src/sniff.c:15: undefinierter Verweis auf 'pcap_open_live ' /home/yahya/workspace/osCoursework/src/sniff.c: 27: undefinierter Verweis auf 'pcap_next ' /home/yahya/workspace/osCoursework/src/sniff.c:31: undefinierter Verweis auf' pcap_geterr' –