2017-03-14 1 views
0

Ich versuche, httpry Cross-kompilieren. Ich habe bereits libpcap kompiliert, aber aus irgendeinem Grund, wenn ich versuche, httpry zu kompilieren, scheint es nicht möglich zu sein, die Bibliothek libpcap zu finden.Problem beim Cross-Compile httpry

Ich habe das Makefile für httpry, um zu versuchen, Cross-Kompilierung zu ändern:

CC    = /usr/bin/arm-linux-gnueabi-gcc 
CCFLAGS   = -Wall -O3 -funroll-loops -I/home/josh/workbench/libpcap-1.8.1 
DEBUGFLAGS  = -Wall -g -DDEBUG -I/home/josh/workbench/libpcap-1.8.1 

Als ich Kompilation versuche ich die folgende Fehlermeldung erhalten:

[email protected]:~/workbench/httpry-0.1.8$ make 
/usr/bin/arm-linux-gnueabi-gcc -Wall -O3 -funroll-loops -I/home/josh/workbench/libpcap-1.8.1 -o httpry httpry.c format.c methods.c utility.c rate.c -lpcap -lm -pthread 
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lpcap 
collect2: error: ld returned 1 exit status 
make: *** [httpry] Error 1 

So sicher es scheint dass LD die Bibliothek nicht findet. Aus Neugier habe ich versucht,

[email protected]:~/workbench/httpry-0.1.8$ ld -L/home/josh/workbench/libpcap-1.8.1 -lpcap 
ld: skipping incompatible /home/josh/workbench/libpcap-1.8.1/libpcap.so when searching for -lpcap 
ld: skipping incompatible /home/josh/workbench/libpcap-1.8.1/libpcap.a when searching for -lpcap 
ld: cannot find -lpcap 

wie die LD Scheint ich auf PATH haben gibt den gleichen Fehler, und es wird dadurch verursacht, dass libpcap kreuz zusammengestellt für eine andere Architektur zu meiner aktuellen Architektur. Aber meine Cross-Komplikation GCC nicht die PATH LD verwenden, verwendet er seine eigene Version, und wenn ich versuche, dass ich die folgenden

[email protected]:~/workbench/httpry-0.1.8$ /usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld -L/home/josh/workbench/libpcap-1.8.1 -lpcap 
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: warning: cannot find entry symbol _start; defaulting to 00000000000081e4 

erhalten, die irgendwie komisch, nicht wahr? Es scheint, als wenn ich ld laufen lasse, kann ich die Bibliothek ohne Probleme finden, aber wenn GCC es aus irgendeinem Grund ausführt, ist es das nicht.

Fehle ich etwas offensichtlich? Gibt es eine Möglichkeit, herauszufinden, mit welchen Argumenten gcc ld anspricht? Ich habe versucht, -v oder - ### zu verwenden, aber ich konnte nichts Nützliches in der Ausgabe finden.

Danke,

Josh

Antwort

0

Scheint, wie LD im richtigen Verzeichnis nicht hinsah. Ich dachte, -I würde sicherstellen, dass es tat, aber es stellt sich heraus, -L notwendig war zu:

CC    = /usr/bin/arm-linux-gnueabi-gcc 
CCFLAGS   = -Wall -O3 -funroll-loops -I/home/josh/workbench/libpcap-1.8.1 -L/home/josh/workbench/libpcap-1.8.1 
DEBUGFLAGS  = -Wall -g -DDEBUG -I/home/josh/workbench/libpcap-1.8.1 -L/home/josh/workbench/libpcap-1.8.1 

Ich bin nicht ganz sicher, warum dies der Fall ist, und ich würde eine Erklärung apprecate. -Ich war immer genug für mich in der Vergangenheit.