[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