2017-08-21 2 views
0

Ich arbeite gerade an einem sehr großen C++ - Projekt in meiner Firma. Meine Aufgabe ist es, einen Code-Generator für bestimmte Teile des Projekts zu erstellen. Das Projekt wird in Kinetis Design Studio 3.0.0 verwaltet, das auf Eclipse basiert. Der Compiler verwendet wird, ist GNU ARM C/C++ Cross-Compiler 1.12.1So verbinden Sie großes C++ - Projekt in Eclipse

Nun mein Problem ist: Da die Anzahl der Dateien meines Generator erhöht erstellt, plötzlich eine Fehlermeldung angezeigt:

arm-none-eabi-g++: error: ./00_Hmi/FontsHandler/SEGE_UI_11B.o: No such file or directory 
make: *** [CDSB_AutoGen.elf] Error 1 

Die Meldung erscheint wenn der Linker versucht, alle Objektdateien mit der endgültigen Binärdatei zu verknüpfen. Die Datei, die nicht vom Linker gefunden wird, existiert definitiv. Wenn ich einige Dateien aus dem Build ausschließe, verschwindet der Fehler (offensichtlich muss ich einige Includes und Teile des Codes korrigieren, die von diesen Dateien abhängen). Es scheint mir egal zu sein, welche Dateien ich ausschließe. Ich kann alle generierten Dateien einschließen und einige andere ausschließen. Ich fand here, dass Linker eine maximale Anzahl von Objektdateien haben, die in der Befehlszeile übergeben werden können. Ich konnte dieses Limit für GCC C++ - Linker nicht finden, aber ich glaube, das könnte das Problem sein. Der Compiler erstellt ungefähr 160 Objektdateien, aber ich bin mir nicht sicher, ob sie alle in dieser letzten Verknüpfungsphase verwendet werden. Ich bin kein Experte mit make oder mit, wie Eclipse diese Dinge behandelt. Aber wenn meine Vermutung richtig ist: Gibt es eine Möglichkeit, dem Linker mitzuteilen, alle Objektdateien zu verwenden?

EDIT: Ich habe den Ordner umbenannt, der die meisten Dateien enthält. Der Linker-Befehl wurde viel kürzer und jetzt funktioniert es gut. Ich muss entweder kürzere Dateinamen verwenden oder einige der CPP-Dateien zusammenpacken.

+1

ist Eclipse-Tag relevant hier? – user7294900

+0

Ich denke ... Seit Eclipse verwaltet die g ++ Anrufe. Oder liege ich falsch? –

Antwort

0

Sie können auch Ihre Projektstruktur reorganisieren und Quellen in eine Reihe von statischen Bibliotheken zerlegen, die am Ende des Bauprozesses miteinander verbunden sind. Dies wird dazu beitragen, die Größe des endgültigen Verknüpfungsbefehls zu reduzieren.

Verwandte Themen