Ich habe die libpcap im externen Ordner aus dem Android-Quellcode heruntergeladen, indem ich Git und Repo verwendet habe. Ich habe die Toolchains des NDK (android-ndk-r5b) verwendet, um die Bibliothek zu kompilieren, indem ich folgende Schritte befolgt habe:
./configure --prefix=Pfad-zum-android-src/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin make clean make make install
und dann wird eine Datei libpcap.a erstellt.
Ich habe einen einfachen Sniffer mit libpcap erstellt (sniffer.c). Wenn ich versuche, ihn zu kompilieren, treten diese Fehler auf: agcc sniffer.c libpcap.a
sniffer.c:9:18: Fehler: pcap.h: Datei oder Verzeichnis nicht gefunden
sniffer.c:19: Warnung: 'struct pcap_pkthdr' deklariert im Parameterliste
sniffer.c:19: Warnung: ihr Gültigkeitsbereich ist nur diese Definition oder Deklaration, was wahrscheinlich nicht das Gewünschte ist
sniffer.c: In Funktion 'processPacket':
sniffer.c:23: Warnung: inkompatible implizite Deklaration der integrierten Funktion 'printf'
sniffer.c:24: Fehler: Dereferenzierung des Zeigers auf unvollständigen Typ
sniffer.c:26: Fehler: Dereferenzierung des Zeigers auf unvollständigen Typ
sniffer.c:33: Fehler: Dereferenzierung des Zeigers auf unvollständigen Typ
sniffer.c: In Funktion 'main':
sniffer.c:45: Fehler: 'pcap_t' nicht deklariert (erste Verwendung in dieser Funktion)
sniffer.c:45: Fehler: (Jede nicht deklarierte Bezeichner wird nur einmal gemeldet
sniffer.c:45: Fehler: für jede Funktion, in der es erscheint.)
sniffer.c:45: Fehler: 'descr' nicht deklariert (erste Verwendung in dieser Funktion)
sniffer.c:46: Fehler: 'PCAP_ERRBUF_SIZE' nicht deklariert (erste Verwendung in dieser Funktion)
sniffer.c:62: Warnung: inkompatible implizite Deklaration der integrierten Funktion 'printf'
sniffer.c:66: Warnung: inkompatible implizite Deklaration der integrierten Funktion 'fprintf'
sniffer.c:66: Fehler: 'stderr' nicht deklariert (erste Verwendung in dieser Funktion)
sniffer.c:72: Warnung: inkompatible implizite Deklaration der integrierten Funktion 'fprintf'
wenn ich versuche, den Object-Code im Voraus zu erzeugen: agcc -c sniffer.o sniffer.c treten dieselben Fehler auf.
Kann mir jemand erklären, wie man dieses Problem lösen kann?
Hier ist der Alias von agcc, den ich in der bashrc-Datei verwende: ./configure --prefix=/home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/
Außerdem habe ich eine Datei mit den Ausgaben der obigen Befehle angehängt: ./configure, make und make install.
(Ich habe die Fehler im Code-Stil aufgeführt, weil es Fehler in der Ausrichtung gab)
Vielen Dank im Voraus!
-- Update --
Ich habe die Optionen -I und -L verwendet, um die Include- und Bibliotheksdateien anzugeben, und diese Fehler sind jetzt verschwunden.
Hier ist mein neues Fehlerprotokoll:
agcc --static -I /home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/include -L /home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/lib -o sniffer sniffer.c libpcap.a
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Umplatzierungen in generischem ELF (EM: 3)
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Umplatzierungen in generischem ELF (EM: 3)
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Umplatzierungen in generischem ELF (EM: 3)
libpcap.a: Konnte Symbole nicht lesen: Datei im falschen Format
collect2: ld gab 1 als Beendigungsstatus zurück
Irgendwelche Ideen?