Jeśli masz wiele plików źródłowych, prawdopodobnie chcesz użyć optymalizacji czasu łącza, aby wygenerować jeden plik kodu bitowego dla całego programu. Inne podane odpowiedzi spowodują, że otrzymasz plik kodu bitcode dla każdego pliku źródłowego.
Zamiast tego chcesz kompilować z optymalizacją czasu łącza
clang -flto -c program1.c -o program1.o
clang -flto -c program2.c -o program2.o
a na ostatnim etapie łączenia dodaj argument -Wl, -plugin-opt = also-emit-llvm
clang -flto -Wl,-plugin-opt=also-emit-llvm program1.o program2.o -o program
Daje to zarówno skompilowany program, jak i odpowiadający mu kod bitowy (program.bc). Następnie możesz zmodyfikować program.bc w dowolny sposób i ponownie skompilować zmodyfikowany program w dowolnym momencie, wykonując czynności
clang program.bc -o program
chociaż pamiętaj, że musisz ponownie dołączyć wszystkie niezbędne flagi konsolidatora (dla bibliotek zewnętrznych itp.).
Zauważ, że musisz użyć złotego linkera, aby to zadziałało. Jeśli chcesz zmusić clang do użycia określonego konsolidatora, utwórz dowiązanie symboliczne do tego konsolidatora o nazwie "ld" w specjalnym katalogu o nazwie "fakebin" gdzieś na twoim komputerze i dodaj opcję
-B/home/jeremy/fakebin
do powyższych kroków łączenia.