Hallo, Ich nutze Codesourcery g++ und finde das kompilieren sehr langsam. Ich kenne zwar make -j5 (Quadcore) allerdings habe ich keine Möglichkeit das irgendwo anzugeben da meine IDE (Winidea von iSystem) eine interne make durchführt. Kann nur Schalter füe arm-eabi-gcc.exe angeben. Gibt es noch andere Möglichkeiten mehrere Kerne beim kompilieren zu nutzen?
Ben _ schrieb: > Kauf einen schnelleren Computer! Billiger: Den Compiler schön klassisch über Makefiles benutzen. Das geht beim Codesourcery immer, mit jeder IDE, weil man die dann einfach weglässt, bzw. nur als Editor/Debugger nutzt. Ausserdem kann man Quellfiles so strukturieren, dass nicht bei jeder kleine Änderung stets das ganze Projekt neu übersetzt werden muss.
Der Gedanke dahin war durchaus schon da, allerdings weiß ich im moment nicht wie ich das extraieren kann. Eine make.exe exitiert auch nicht. Früher hatte ich yagarto und externes Makefile, gestört hat mich aber das alles immer wieder eingetragen werden muste bei neuen Modulen. Aber wenn es keine andere Möglichkeit gibt, es ist schon ein großer unterschied zwischen -j2 und -j5.
Wenn du elendige C++-Header hast, könntest du die vorkompilieren lassen.
Frederick schrieb: > Schalter füe arm-eabi-gcc - -O0 optimiert auf Resourcenverbrauch des Hosts - -pipe beim Compilieren - -g0 denn debug-Info wie DWARF-3 vergrößert massiv dir Objekte und Symboltabellen, insbesondere geht das Linken schneller - Preprocessed Headers (PPH) verwenden - Auf Optimierungen wie LTO verzichten - Keine Dumps oder temporären Dateien erstellen lassen - Bei selbsterstelltem GCC darauf achten, daß dieser mit -O2 o.ä. erzeugt wurde!
Eigendlich mache ich "nur" c mit STMf103/105/107. Arbeite aber mit der lib zusammen nd das kann schonmal 10Sekunden dauern. Mit -j5 wären es ca 3 Sekunden (geschätzt). Wenn man es also nutzen kann will ich es auch, aber abgesehen von diesem Schalter hab ich im Netz nichts gefunden.
@Johann Ich meine nicht die Code Optimierungen, sondern die Zeit für das Kompilieren an sich wenn es nur auf einem Kern läuft bzw. immer nur ein Modul gleichzeitig bearbeitet wird.
Frederick schrieb: > Ich meine nicht die Code Optimierungen, Er auch nicht. Ohne Optimierung zu übersetzen spart Übersetzungszeit.
Frederick schrieb: > Ich kenne zwar make -j5 (Quadcore) Da geht gerne auch -j10, denn Operationen wie I/O können parallelisiert werden durch Plattencontroller, DMA etc. Während ein Prozess auf seine Daten wartet, kann der andere schon compilieren.
Hallo Johann,
>- -pipe beim Compilieren
Wieso wird das eigentlich nicht standardmässig verwendet?
Wäre doch mehr als logisch
Also makefile, Wo ist den wohl mein make.exe geblieben oder muss man das extra heunterladen. Beim ITAG FIFTY ist es nicht dabei.
-j10 bringt aber nur was wenn Projekt riesig gross (bei µCs unwahrscheinlich) oder zu wenig RAM vorhanden ist. Andernfalls ist nach dem ersten Lauf alles was relevant ist im Disk-Cache.
Frederick schrieb: > Also makefile, Wo ist den wohl mein make.exe geblieben oder muss man das > extra heunterladen. Such mal dort: http://www.mingw.org/
Noch 'ne Frage:
> debug-Info wie DWARF-3 vergrößert massiv dir Objekte
Was ist eigentlich der spezifische Nutzen von DWARF-3?
Wo kann ich das nachlesen?
Danke!
Ohne Debug-Info ist der Debugger ziemlich aufgeschmissen. Wenn du Debugging per printf machst, dann brauchst du die nicht. Bei JTAG&Co hingegen schon.
Hallo prx
>Ohne Debug-Info ist der Debugger ziemlich
Das ist mir schon klar.
Die Frage war eigentlich "Was bringt DWARF-3 im
Vergleich zu DWARF-1,2 oder anderen, kompakteren Debuginfo-Formaten"
Sorry war unklar formuliert.
Tja. Das spawnen eines Prozesses ist in Windows echt lahm. Ein DS-Projekt von mir (cross) kompiliert auf linux 4 minuten (-j5), auf Windows (selbe GCC-version, selbes target) knapp 15
Da er Codesourcery verwendet kann er auf Linux umsteigen. Das erspart ihn die Suche nach make. ;-)
In der aktuellen Version scheint CodeSourcery Eclipse+CDT zu sein, hier auf Seite 5: http://communities.mentor.com/mgcx/servlet/JiveServlet/previewBody/3033-102-2-5991/Building%20a%20Linux%20Kernel%20Using%20Sourcery%20CodeBench.pdf steht wie man parallel baut: a. Select Projects > properties. b. Select C/C++ Build. c. Select the Behavior tab. d. Enable Parallel Builds. i. Select the Use Parallel Build option. ii. Select Use Parallel Jobs. iii. Enter the number of parallel jobs to run ..genauso wie bei Eclipse+CDT eben. Ist das bei dir auch so?
A. K. schrieb: > -j10 bringt aber nur was wenn Projekt riesig gross Konkret: es muss aus mindestens 10 Quelldateien bestehen, denn die Parallelisierung erfolgt auf der Ebene von "make". Wenn man nur eine Quelldatei hat, die compiliert und gelinkt werden muss, wird "make" auch mit -j5 oder -j10 nur in der Lage sein, diese zuerst compilieren und danach linken zu lassen. Zusammen mit -pipe ließe sich beim Compilieren der Assembler auf einem zweiten Prozessor ausführen. Allerdings braucht der insgesamt so wenig CPU-Zeit, dass das auf aktuellen Prozessoren vernachlässigbar ist.
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.