GCC, AVR-GCC, ARM-GCC

OP #4213572
Lesenswert?

Hallo zusammen,
vielleicht ist de Frage für den GCC-Kenner banal, aber ich habe über den 
internen Aufbau der GCC noch nicht die Informationen gefunden, die mir 
helfen, die Frage zu beantworten. Auf meinem Windows-Rechner habe ich 
ein MinGW, einen AVR-GCC und einen ARM-GCC (none-Eabi) installiert. Da 
es sich um jeweils unterschiedliche Versionen handelt, sind viele 
Dateien nicht binär identisch, was die Suche nach 
Gemeinsamkeiten/Unterschiedem erschwert.

Beim AVR-GCC haben viele Executables das Namenspräfix "AVR-". Ansonsten 
sieht es auf den ersten Blick so aus, als brächte MinGW auch die libc 
für andere Plattformen mit.

Was ist also der Unterschied zwischen diesen drei Ausprägungen des GCCs?

Viele Grüße
W.T.
Moderator Persönliche Seite #4214058
Lesenswert?

Walter T. schrieb:
> Was ist also der Unterschied zwischen diesen drei Ausprägungen des GCCs?

In erster Linie natürlich, dass sie für verschiedene Ziel-CPUs
(“target”) compiliert worden sind und entsprechend die jeweiligen
Backends Code für genau diese Plattform erzeugen.

Neben dem Compiler selbst gehört dazu jeweils auch eine eigene
Version der Binutils (Assembler und Linker, wobei sich insbesondere
natürlich die Assembler zwischen den Zielsystemen stark unterscheiden)
sowie normalerweise auch einer Systembibliothek.
OP #4215412
Lesenswert?

Hallo zusammen,

danke für die Antworten.

Jörg W. schrieb:
> [...] dass sie für verschiedene Ziel-CPUs
> (“target”) compiliert worden sind [...]

OK, daß der Build-Prozeß sich auch für verschiedene Ziel-Plattformen 
unterscheidet war mir noch gar nicht bewußt. Bislang ging ich implizit 
davon aus, daß jeder GCC auf jeder Plattform erst einmal prinzipiell 
dazu in der Lage ist, für alle Zielplattformen zu kompilieren.

Viele Grüße
W.T.
Moderator Persönliche Seite #4215439
Lesenswert?

Walter T. schrieb:
> OK, daß der Build-Prozeß sich auch für verschiedene Ziel-Plattformen
> unterscheidet war mir noch gar nicht bewußt.

Das wird beim configure festgelegt.
1
mkdir build && cd build
2
../configure => Konfiguration für target = host

Dagegen
1
mkdir build-avr && cd build-avr
2
../configure --target=avr
3
cd ..
4

5
mkdir build-arm && cd build-arm
6
../configure --target=arm-none-eabi
7
cd ..

konfigurieren Cross-Compiler.  Ein Cross-Compiler muss nicht notwendig
eine andere CPU sein, es kann auch eine andere Plattform mit gleicher
CPU-Architektur sein, bspw. wenn man ein MinGW32-Target unter einem
unixoiden OS konfigurieren möchte (mit sowas baue ich die
Windows-Binaries für AVRDUDE).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren