[linux-l] Cross-Compiler
Jan-Benedict Glaw
jbglaw at lug-owl.de
Sa Mai 15 18:19:09 CEST 2004
On Sat, 2004-05-15 18:01:53 +0200, Axel Weiß <aweiss at informatik.hu-berlin.de>
wrote in message <200405151801.53812.aweiss at informatik.hu-berlin.de>:
> Jan-Benedict Glaw wrote:
> > On Sat, 2004-05-15 13:05:18 +0200, Axel Weiß
> > <aweiss at informatik.hu-berlin.de>
> > wrote in message <200405151305.18900.aweiss at informatik.hu-berlin.de>:
> > Du brauchst zumindest den Target-Namen, der sollte sich aber bei der
> > Lektüre des ./gcc/configure-Scripts ergeben.
> >
> > Handelt es sich dabei um ein Linux-Target?
>
> Eigentlich nicht, ich hab' kein Linux auf dem TriCore laufen. Ich will
> TriCore-Code erzeugen, der direkt mit der Hardware redet, und brauche dafür
> eigentlich nur crt0.S. Der Compiler soll aber unter Linux arbeiten.
>
> Mein erster Ansatz war ja auch, --target=tricore anzugeben. Mit den binutils
> kein Problem, aber beim gcc kommt nur:
> *** Configuration tricore-none not supported
> (obwohl das target=tricore in gcc/configure behandelt wird; aber
> das ./configure verändert den target-Namen und hängt '-none' dran...)
Ah, dann versuch's mal mit tricore-elf.
> Seitdem rate ich eigentlich nur, was ich tun soll. Ich habe mittlerweile über
> ein Dutzend Konfigurationen für binutils und gcc (bei beiden soll ja 'target'
> gleich sein) ausprobiert (und keine compiliert zu ende). Seltsamerweise muss
> ich, wenn die binutils mit --target=tricore-xxx-yyy konfiguriert werden, beim
> gcc angeben: --target=tricore-yyy-xxx, sonst bricht configure mit der 'not
> supported'-Meldung ab. Damit der Cross-Compiler xgcc die richtigen Tools (as,
Klar. GCC benutzt Assembler, Linker und Co. von Binutils. Da wird dann
${target}-as etc. aufgerufen, die es dann natürlich nicht gibt; als
Besonderheit wird u.U. dem Linker der Target-Name zusätzlich als
Parameter übergeben, sodaß die Targets als wirklich übereinstimmen
müssen.
Aber auch, wenn Du nur einen reinen C-Compiler brauchst - guck' dir mal
die ./configure-Aufrufe aus crosstool.sh an:)
> ld, ar, nm usw.) findet, um die Laufzeit-Bibliotheken zu erzeugen, habe ich
> im binutils-Installationsverzeichnis einen Satz static-links untergebracht,
> die im Prefix die xxx und yyy wieder umdrehen. Ich weiß aber nicht, ob ich
> damit auf dem Holzweg bin :(
Bist Du. Du mußt binutils target-passend konfigurieren (tricore-elf
würde in Deinem Fall Sinn machen), und dann das $PREFIX/bin/-Verzeichnis
im Pfad haben, wenn Du den Compiler ./configure'ierst. Dann findet der
die Programme richtig, und Du mußt (darfst nichtmal!) nicht mit
irgendwelchen Links 'rumfummeln.
> Eigentlich brauche ich doch keine Laufzeit-Bibliothek - oder?
Nicht zwingend. Insbesondere nicht, wenn Du kein Betriebssystem hast,
an das Du Dich halten mußt.. Wenn das eine vollständige
Embedded-Geschichte ist (Du also quasi die Firmware für ein Gerät
entwickelst), kannst Du das alles weglassen.
> Am meisten ärgert mich, daß die erste Konfiguration (s.o.) nicht klappt. Soll
> ich jetzt im configure-Skript rumhacken, damit target=tricore nicht verändert
> wird, wenn gcc/configure aufgerufen wird?? Ich habe so meine Zweifel.
Nein. Versuch's mal mit tricore-elf - diese Konfigurataion wird
gewöhnlich genommen, wenn man kein OS-Support haben möchte.
MfG, JBG
--
Jan-Benedict Glaw jbglaw at lug-owl.de . +49-172-7608481
"Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg
fuer einen Freien Staat voll Freier Bürger" | im Internet! | im Irak!
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 189 bytes
Beschreibung: Digital signature
URL : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20040515/b0418f04/attachment.sig>
Mehr Informationen über die Mailingliste linux-l