Якщо у вас є декілька вихідних файлів, ви, ймовірно, хочете використовувати оптимізацію посилання-часу для виведення одного файлу бітового коду для всієї програми. Інші наведені відповіді змусять вас отримати файл бітового коду для кожного вихідного файлу.
Натомість, ви хочете компілювати за допомогою оптимізації часу та часу
clang -flto -c program1.c -o program1.o
clang -flto -c program2.c -o program2.o
а для завершального кроку посилання додайте аргумент -Wl, -plugin-opt = також-emit-llvm
clang -flto -Wl,-plugin-opt=also-emit-llvm program1.o program2.o -o program
Це дає вам як компільовану програму, так і відповідний їй біт-код (program.bc). Потім ви можете змінити program.bc будь-яким способом, який вам подобається, і перекомпілювати змінену програму в будь-який час, зробивши це
clang program.bc -o program
хоча пам’ятайте, що на цьому кроці потрібно знову включити будь-які необхідні прапорці посилання (для зовнішніх бібліотек тощо).
Зауважте, що для цього вам потрібно використовувати золотий лінкер. Якщо ви хочете змусити Кланг використовувати певний лінкер, створіть символьне посилання на цей лінкер під назвою "ld" у спеціальному каталозі під назвою "fakebin" десь на вашому комп'ютері та додайте параметр
-B/home/jeremy/fakebin
до будь-яких етапів посилання вище.