Si vous avez plusieurs fichiers source, vous voulez probablement utiliser l'optimisation de temps de liaison pour générer un seul fichier bitcode pour l'ensemble du programme. Les autres réponses données vous feront finir avec un fichier bitcode pour chaque fichier source.
À la place, vous voulez compiler avec l'optimisation de temps de liaison
clang -flto -c programme1.c -o programme1.o
clang -flto -c programme2.c -o programme2.o
et pour l'étape finale de liaison, ajoutez l'argument -Wl,-plugin-opt=also-emit-llvm
clang -flto -Wl,-plugin-opt=also-emit-llvm programme1.o programme2.o -o programme
Cela vous donne à la fois un programme compilé et le bitcode correspondant (program.bc). Vous pouvez ensuite modifier program.bc de la manière que vous voulez, et recompiler le programme modifié à tout moment en faisant
clang program.bc -o programme
mais soyez conscient que vous devez inclure à nouveau les drapeaux de liaison nécessaires (pour les bibliothèques externes, etc.) à cette étape.
Notez que vous devez utiliser le linker gold pour que cela fonctionne. Si vous voulez forcer clang à utiliser un linker spécifique, créez un lien symbolique vers ce linker 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.
0 votes
Je suppose que cela s'appelle code LLVM.