Si vous avez plusieurs fichiers source, vous souhaitez probablement utiliser l'optimisation du temps de liaison pour générer un fichier bitcode pour l'ensemble du programme. Les autres réponses données vous feront vous retrouver avec un fichier bitcode pour chaque fichier source.
Au lieu de cela, vous souhaitez compiler avec l'optimisation du temps de liaison
clang -flto -c program1.c -o program1.o
clang -flto -c program2.c -o program2.o
et pour la dernière étape de liaison, ajoutez l'argument -Wl, -plugin-opt = also-emit-llvm
clang -flto -Wl,-plugin-opt=also-emit-llvm program1.o program2.o -o program
Cela vous donne à la fois un programme compilé et le bitcode correspondant (program.bc). Vous pouvez ensuite modifier program.bc comme vous le souhaitez et recompiler le programme modifié à tout moment en faisant
clang program.bc -o program
mais sachez que vous devez inclure à nouveau tous les indicateurs de l'éditeur de liens nécessaires (pour les bibliothèques externes, etc.) à cette étape.
Notez que vous devez utiliser l'éditeur de liens Gold pour que cela fonctionne. Si vous voulez forcer clang à utiliser un éditeur de liens spécifique, créez un lien symbolique vers cet éditeur nommé "ld" dans un répertoire spécial appelé "fakebin" quelque part sur votre ordinateur, et ajoutez l'option
-B/home/jeremy/fakebin
à toutes les étapes de liaison ci-dessus.