[linux-l] Cross-Compiler

Axel Weiß aweiss at informatik.hu-berlin.de
Sa Mai 15 22:25:40 CEST 2004


Jan-Benedict Glaw wrote:
> --exec-prefix brauchst Du IMHO nicht. ...und --with-{as,ld} müßte auch
> über sein.

Ohne --with-{as,ld} geht's nie, er nimmt dann as oder ld aus dem Suchpfad und 
bricht schon früh ab. Und --exec-prefix schadet doch nicht.

> Dann mußt Du config.gcc durchlesen und gucken, welche Targets angeboten
> werden:)

$ grep tricore ../../gcc-3.3/config.sub
        tricore)
                basic_macine=tricore-unknown
        tricore-*)
                basic_machine=tricore-`echo $basic_machine | sed 
's/^[^-]*-//'`
        tricore*-linux)

>
> Andererseits - Du hast ja schon den Assembler, damit könntest Du schon
> "Programme" schreiben:)
>
> > -> www.freesp.de
> > (z.Zt. TriCore nur mit Tasking-Compiler)

Na ja - ganz ohne Assembler komme ich nicht aus, wenn der Prozessor rund 
laufen soll ;)  Und der TriCore hat einen coolen Co-Prozessor (der macht bei 
mir die komplette Interruptverarbeitung), und den muß man in Assembler 
programmieren.

Aber der Kern läuft in ANSI-C, ist deswegen auch portabel.

> > Ich hab jetzt entdeckt, wofür gcc doch eine Laufzeitbibliothek braucht:
> > zum Rechnen, da werden Symbole wie __mulvsi3 bereitgestellt.
>
> Die mußt Du ja nicht benutzen:) Zudem kommen die IIRC aus der libgcc,
> ist also Bestandteil vom gcc.

Das ist doch die Laufzeit-Bibliothek.

> > > > 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.
> >
> > Und jetzt? Wie krieg ich raus, warum tricore-elf nicht genommen wird? In
> > gcc/configure finde ich Einträge für tricore und *tricore*, aber keine
> > Ausgabe 'Configuration <irgendwas> not supported'.
>
> Die findet woanders statt. Wofür ist das Ding denn eigentlich gedacht?
> Gibt's denn garkeine Doku dazu, wie man die Toolchain zu konfigurieren
> hat?

Da muß ich etwas ausholen. Für Infineon's TriCore gibt es zwei kommerzielle 
(Windoofs-) Compiler, Tasking und GreenHills. Einen Tasking-Compiler habe ich 
mir Anfang des Jahres vom Hersteller erbettelt (arme Uni in Berlin, die 
Spendenbescheinigung können sie wenigstens von der Steuer absetzen), und 
damit mein freeSP-Projekt auf den TriCore portiert.

HighTec (Saarbrücken, www.hightec-rt.com) bietet den gcc für TriCore an (auf 
der Homepage mit Version 3.3.2), rücken aber die Sources nicht raus! Das habe 
ich von verschiedenen Seiten so gehört, und bemühe mich selbst seit vielen 
Wochen erfolglos. HighTec hat mir schließlich vor einer Woche eine CD 
geschickt mit Quellen für den gcc-2.95.3, die aber so voller Fehler steckt, 
daß sie nicht brauchbar ist. (Ich habe einen ganzen Tag damit verbracht, 
Syntax-Fehler zu fixen, und dann genervt abgebrochen.) Mittlerweile habe ich 
über meine Beziehungen zu Infineon die gcc-Quellen-3.3.4 bekommen und plage 
mich seit gestern damit rum.

TriCore-spezifische Doku fehlt.

In der embedded-linux-Welt gibt es ein großes Interesse, mit dem gcc auf dem 
TriCore zu arbeiten, und ich habe vor, den Compiler (wenn er denn 
funktioniert) übers web bereitzustellen.

> > Ich suche gerade weitere Hinweise in crosstool.sh (das Meiste habe ich
> > aber schon probiert).
> >
> > Hast Du noch mehr Tipps, Jan?
>
> Erstmal herausfinden, wie das Target heißt:) Angeblich soll's Linux für
> das Ding geben, also würde ich mal tricode-linux probieren...

Ja, hab ich auch:
../../binutils-2.13/configure --prefix=/usr/local/tricore 
--target=tricore-linux
*** ld does not support target tricore-unknown-linux-gnu
*** see ld/configure.tgt for supported targets

In meiner ersten Mail habe ich schon geschrieben, daß das mit dem Target-Namen 
seltsam ist. Entweder passt er auf binutils oder auf gcc - wie gesagt, habe 
ich schon viele ausprobiert und die Systematik - binutils: tricore-xxx-yyy - 
gcc: tricore-yyy-xxx - herausgefunden. Daher auch meine Idee mit den Links im 
bin-Verzeichnis.

Dazu kommt, daß ich jetzt eigentlich wenig Sinn darin sehe, den gcc für ein 
Linux-System auf TriCore zu bauen, weil dort kein Linux läuft.

Ich werde halt weiter experimentieren, mir die configure-Skripts mal vornehmen 
und versuchen, das crosstool einzusetzen.

Grüße,
			Axel

-- 
Humboldt-Universität zu Berlin
Institut für Informatik
Signalverarbeitung und Mustererkennung
Dipl.-Inf. Axel Weiß
Rudower Chaussee 25
12489 Berlin-Adlershof
+49-30-2093-3050
** www.freesp.de **



Mehr Informationen über die Mailingliste linux-l