Hallo, ich möchte gerne wget auf einem arm Prozessor verwenden. Jedoch schaffe ich es nicht wget für einen arm cross zu komplilieren, so das ích eine ausführbare Datei erhalte. Wie muss ich dabei am besten Vorgehen (Anleitung, einzelne Schritte,Programm,etc.) Danke.
> Jedoch schaffe ich es nicht wget für einen arm cross zu komplilieren, > so das ích eine ausführbare Datei erhalte. Üblicherweise gibt ein Compiler in so einem Fall Fehlermeldungen aus. Die muss man sich ansehen, und zwar fängt man mit der ersten Fehlermeldung an. Wird deren Ursache beseitigt, so lässt man den Compiler nochmal 'ran und sieht sich die dann resultierenden Fehlermeldungen an. Und das wiederholt man so lange, bis es keine Fehlermeldungen mehr gibt.
Wo genau ist das Problem? Ich kann wget-1.11 problemlos für arm compilieren.
1 | ./configure --host=arm-unknown-linux-gnu |
2 | make |
wget-1.11 gcc-3.4.5 glibc-2.3.6
folgendes Befehle habe ich ausgeführt. 1.) ./configure --disable-nls --target=arm-linux-linux-gcc --prefix=/usr => keine Fehlermeldung Letzte Zeile: creating po/Makefile 2.) make => keine Fehlermeldung Jedoch beginnt die erste Zeile mit cd src && make CC='gcc' CPPFLAGS=' ' Frage: Warum ist im Makefile nun CC=gcc und nicht CC=arm-linux-gcc?
Für welche Architektur es kompiliert wurde, findest du so heraus.
1 | readelf -a wget|grep Machine |
Warum benutzt du nicht die Version von Timo?
Ich habe die Version von Timo verwendet. Dabei erhielt ich keine Fehlermeldung. Nach ausführen von readelf -a wget|grep Machine wird behauptet das es für eine Intel 80386 Architektur compiliert wurde und nicht für einen Arm. Laut Timo müste es funktionieren. Was könnte noch falsch sein?
Falsche gcc-Version aufgerufen. Offensichtlich ist auf Deiner Maschine auch noch ein x86-gcc vorhanden, und den rufst Du/Dein Makefile auf.
Also diesen konkreten Fall kenne ich nicht, aber wenn man z.B. als Target arm-elf angibt, dann sucht das configure Skript zuerst nach arm-elf-gcc. Wird der gefunden, dann nimmt er an dass es die Toolchain gibt, sonst wird der Normale gcc des Build-Hosts genommen -- was nicht OK ist. Also erstmal prüfen, ob der richtige gcc für den ARM Controller im PATH ist. HTH - cl
Vielen Dank für die Hilfe. Ich besitze nun wget für einen arm nach langen probieren.
> diesen konkreten Fall kenne ich nicht, aber wenn man z.B. als Target > arm-elf angibt, dann sucht das configure Skript zuerst nach arm-elf- >gcc. Nein. wenn man als target arm-elf angibt, wird das ignoriert, weil das target für wget völlig belanglos ist. Wenn man einen wget bauen will, der auf einem Arm läuft, muß man das arm-elf als host angeben. > wird der Normale gcc des Build-Hosts genommen -- was nicht OK ist. Jetzt wirfst du build und host durcheinander. Es gibt drei Systeme bei configure: build -> Das System, auf dem gebaut werden soll host -> Das System, wo das gebaute Programm laufen soll target -> Das System, das für das gebaute Programm Zielsystem ist Target ist eigentlich nur von belang, wenn man einen Compiler bauen will. Wenn man also z.B. unter Linux einen GCC bauen will, der unter Windows (mingw) läuft und ARM-Code generieren soll, wäre build i686-pc-linux-gnu, host wäre i586-mingw32msvc und target wäre arm-elf. Bei wget gibt's natürlich kein Target, weil's selbst keinen Code generiert. Wenn man nichts explizit angibt, wird build automatisch ermittelt, host gleich build gesetzt und target gleich host.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.