clang を llvm IR にコンパイルする方法 質問する

clang を llvm IR にコンパイルする方法 質問する

clang で C/C++ コードをバイナリ実行可能ファイルではなく LLVM ビットコードにコンパイルしたいです。どうすれば実現できますか?

LLVM ビットコードがある場合、それをさらにバイナリ実行可能ファイルにコンパイルするにはどうすればよいでしょうか?

バイナリ実行ファイルにコンパイルする前に、LLVM ビットコードに独自のコードを追加したいと思います。

ベストアンサー1

いくつかの C/C++ ファイルが与えられますfoo.c:

> clang -S -emit-llvm foo.c

foo.llLLVM IR ファイルを生成します。

このオプションは、次-emit-llvmの方法でドライバーではなくコンパイラのフロントエンドに直接渡すこともできます。-cc1

> clang -cc1 foo.c -emit-llvm

foo.llIR を使用して生成します。-cc1などのクールなオプションを追加します。詳細については、-ast-printをご覧ください。-cc1 --help


LLVM IR をアセンブリにさらにコンパイルするには、次のllcツールを使用します。

> llc foo.ll

アセンブリで生成しますfoo.s(デフォルトは、実行するマシンのアーキテクチャです)。LLVMllcツールの1つです。ここにそのドキュメントがあります

おすすめ記事