2013-05-04 7 views
6

Ich versuche, eine C++ - Bibliothek auf einem Linux-System mit eingeschränkten Speicherressourcen zu erstellen, mit G ++ 4.6. Die Bibliothek verwendet Boost stark.Speicherbelegung in Boost Build reduzieren

Ich habe verschiedene Threads hier und in anderen Websites bezüglich der Kompilierungsgeschwindigkeit gesehen, aber ich bin an Tipps und Tricks interessiert, um G ++ weniger Speicherressourcen zu sparen, obwohl es bedeutet, Geschwindigkeit zu verlieren.

EDIT: Ich habe versucht, vorkompilierte Header für Boost, die nur Build-Geschwindigkeit verbessert, benötigt aber immer noch etwa die gleiche Menge an Speicher.

+1

Es klingt wie Sie versuchen, auf einer eingebetteten Plattform aufzubauen. Dies ist im Allgemeinen keine gute Idee. Verwenden Sie stattdessen die Cross-Compilierung von einer Plattform, die nicht auf die gleiche Weise eingeschränkt ist, und übertragen Sie das Programm nach der Erstellung auf die Plattform. –

+0

Ich fürchte, es ist nicht möglich, ohne diese Bibliothek Implementierung zu ändern, insbesondere die Art, wie es 'Boost' verwendet. Eine hohe Speichernutzung zur Kompilierungszeit bedeutet normalerweise, dass viele Template-Instanziierungen durchgeführt werden. –

+0

@JoachimPileborg Nein. Wir haben nur einen sehr bescheidenen Server und keine Ressourcen, um ihn zu aktualisieren. – cyberguijarro

Antwort

5

Sie müssen mit den Garbage Collector-Einstellungen spielen. Die Parameter sind ggc-min-expand und ggc-min-heapsize. Setzen Sie auch Ihr ulimit mit ulimit 65536 (oder was auch immer), um die Größe des Heapspeichers (RLIMIT_AS) zu reduzieren.

Viele Informationen über die in der gcc manual here

Eine gute Einstellung kann damit eingestellt sein, um die GGC-min-expand param auf 0 und GGC-min-Heapsize param 8192 und versuchen ...

CXXFLAGS = "$ (CXXFLAGS) - Param ggc-min-erweitern = 0 - param ggc-min-heapsize = 8192" oder einige solche Wert.