C/C++ Programm unter Linux statisch/dynamisch kompilieren

Neulich hatte ich das Problem, ein Programm unter Linux statisch kompilieren zu wollen. Prinzipiell ist der Ansatz mit -static kein Problem:

g++ -g -static -O0 test.cc -o test.o
g++ -g -static -o test test.o

Bei einem größeren Projekt, bei dem eigentlich eine dynamisch geladene Bibliothek erzeugt werden sollte (diese sich aber nicht der Code-Coverage unterziehen lassen wollte), bin ich dann zu libtool gekommen, welches eigentlich nichts anderes macht, aber dafür konsequenter:

libtool --mode=compile --tag=CXX g++ -g -O0 test.cc -o test.o
libtool --mode=link --tag=CXX g++ -g -O0 -o test test.o

Beachten sollte man, dass dabei jede Menge *.lo-Dateien anfallen (für jede Objekt-Datei eine) und zusätzlich auch ein .libs-Verzeichnis erstellt wird (für jedes Verzeichnis mit Source-Dateien). Diese sollte man bei einem clean eventuell auch löschen.