Es dauerte eine Weile, bis alles richtig war. Ich hatte dieses Problem beim Cross-Compilieren in Ubuntu für ein ARM-Ziel. Ich habe es gelöst mit:
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf
Hinweis CFLAGS wird nicht mit autogen.sh/configure verwendet. Bei Verwendung von CFLAGS wurde der Fehler angezeigt: "configure: error: C-Compiler kann keine ausführbaren Dateien erstellen". In der Build-Umgebung wurde ein autogen.sh-Skript bereitgestellt, wenn Sie keinen autogen.sh-Skriptersatz haben ./autogen.sh durch ./configure im obigen Befehl. Ich habe config.guess auf dem Zielsystem ausgeführt, um den Parameter --host abzurufen.
Kompilieren Sie nach erfolgreicher Ausführung von autogen.sh/configure mit:
PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib CFLAGS="-march=... -mcpu=... etc." make
Die CFLAGS, die ich verwendet habe, waren: "-march = armv5te -fno-tree-vectorize -mthumb-interwork -mcpu = arm926ej-s". Es wird eine Weile dauern, bis alle Include-Verzeichnisse korrekt eingerichtet sind: Möglicherweise möchten einige Includes auf Ihren Cross-Compiler und andere auf Ihre Root-Dateisystem-Includes verweisen, und es wird wahrscheinlich zu Konflikten kommen.
Ich bin sicher, dass dies nicht die perfekte Antwort ist. Und ich sehe immer noch einige Include-Verzeichnisse, die auf / und nicht / ccrootfs in den Makefiles verweisen. Würde gerne wissen, wie man das korrigiert. Hoffe das hilft jemandem.
export C_INCLUDE_PATH=~/local/include:$C_INCLUDE_PATH
, sucht Ihr Compiler zuerst in~/local/include
und in $ C_INCLUDE_PATH nur, wenn er das Include im ersten Verzeichnis nicht gefunden hat.