Forum: Compiler & IDEs GCC, AVR-GCC, ARM-GCC


von Walter T. (nicolas)


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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Libc ist kein Teil von GCC.  Wenn für den entsprechenden GCC eine Libc 
vorhanden ist, dann also offenbar als Teil einer Distribution.

Welche Eigenschaften eine Distribution hat hägt logischerweise vor der 
jeweiligen Distribution ab.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Walter T. (nicolas)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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).

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.