Forum: PC-Programmierung wget cross compileren für arm


von Test T. (knarfee)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> 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.

von Timo (Gast)


Lesenswert?

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

von Test T. (knarfee)


Lesenswert?

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?

von cow and bunny watcher (Gast)


Lesenswert?

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?

von Test T. (knarfee)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Falsche gcc-Version aufgerufen. Offensichtlich ist auf Deiner Maschine 
auch noch ein x86-gcc vorhanden, und den rufst Du/Dein Makefile auf.

von Test T. (knarfee)


Lesenswert?

wie kann ich das richtige gcc auswählen?

von Christoph L. (clechner)


Lesenswert?

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

von Test T. (knarfee)


Lesenswert?

Vielen Dank für die Hilfe.

Ich besitze nun wget für einen arm nach langen probieren.

von Rolf Magnus (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.