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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.