Wenn Sie mehrere Quelldateien haben, möchten Sie wahrscheinlich die Link-Time-Optimierung verwenden, um eine Bitcode-Datei für das gesamte Programm auszugeben. Die anderen Antworten führen dazu, dass Sie für jede Quelldatei eine Bitcode-Datei erhalten.
Stattdessen möchten Sie mit der Optimierung der Verbindungszeit kompilieren
clang -flto -c program1.c -o program1.o
clang -flto -c program2.c -o program2.o
Fügen Sie für den letzten Verknüpfungsschritt das Argument -Wl, -plugin-opt = also-emit-llvm hinzu
clang -flto -Wl,-plugin-opt=also-emit-llvm program1.o program2.o -o program
Dies gibt Ihnen sowohl ein kompiliertes Programm als auch den entsprechenden Bitcode (program.bc). Sie können dann program.bc nach Belieben ändern und das geänderte Programm jederzeit neu kompilieren
clang program.bc -o program
Beachten Sie jedoch, dass Sie in diesem Schritt erneut alle erforderlichen Linker-Flags (für externe Bibliotheken usw.) einfügen müssen.
Beachten Sie, dass Sie den Gold-Linker verwenden müssen, damit dies funktioniert. Wenn Sie clang zwingen möchten, einen bestimmten Linker zu verwenden, erstellen Sie einen Symlink zu diesem Linker mit dem Namen "ld" in einem speziellen Verzeichnis namens "fakebin" irgendwo auf Ihrem Computer und fügen Sie die Option hinzu
-B/home/jeremy/fakebin
zu den oben genannten Verknüpfungsschritten.