C/C++ Programm unter Linux statisch/dynamisch kompilieren
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.