mikrocontroller.net

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


Autor: Test Test (knarfee)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo genau ist das Problem? Ich kann wget-1.11 problemlos für arm 
compilieren.
./configure --host=arm-unknown-linux-gnu
make

wget-1.11
gcc-3.4.5
glibc-2.3.6

Autor: Test Test (knarfee)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: cow and bunny watcher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für welche Architektur es kompiliert wurde, findest du so heraus.
readelf -a wget|grep Machine

Warum benutzt du nicht die Version von Timo?

Autor: Test Test (knarfee)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Test Test (knarfee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie kann ich das richtige gcc auswählen?

Autor: Christoph Lechner (clechner)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Test Test (knarfee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Hilfe.

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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.