C/C++コードをWebAssemblyに変換し、ブラウザーやNode.jsなどのWasmランタイムで実行できるコンパイラツールチェーン。
llvm/llvm-project
LLVMコア、Clang C/C++フロントエンド、libc++、LLDリンカーなどを含む、モジュール式のコンパイラおよびツールチェーン技術群。
- スター
- 41,146
- フォーク
- 19,227
- 未解決の Issue
- 40,870
- 最終コミット
- 1 時間前
これは何?
LLVMは、最適化コンパイラやオプティマイザー、ランタイム環境を構築するためのツールキットです。LLVMのコアコンポーネントは、中間表現を処理してオブジェクトファイルに変換するために必要なライブラリ、ツール、ヘッダーファイルを提供します。これには、アセンブラー、逆アセンブラー、ビットコードアナライザー、ビットコードオプティマイザーが含まれます。
このプロジェクトには、C、C++、Objective-C、Objective-C++のコードをLLVMビットコードにコンパイルし、さらにオブジェクトファイルに変換するフロントエンドのClangも含まれます。同じリポジトリには、C++標準ライブラリのlibc++や、LLDリンカーなどのコンポーネントもあります。
このリポジトリはこれらのプロジェクトのモノレポなので、コンパイラ、言語ツール、コードジェネレーターを開発する人は、共通のインフラを一か所で利用できます。
主な機能
- 01再利用可能な中間表現とコード生成インフラを提供します。
- 02C、C++、Objective-C、Objective-C++向けのフロントエンド、Clangを含みます。
- 03C++標準ライブラリの実装であるlibc++を提供します。
- 04LLDリンカーをはじめとするツールチェーンコンポーネントを含みます。
- 05アセンブラー、逆アセンブラー、ビットコードオプティマイザーなどのツールを提供します。
ユースケース
- 新しいプログラミング言語向けのコンパイラやコードジェネレーターを構築する。
- ClangツールチェーンでCまたはC++のプロジェクトをコンパイルする。
- LLVM中間表現を対象とする最適化パスを作成する。
- LLDリンカーでネイティブバイナリをリンクする。
クイックスタート
- 1
LLVMをソースからビルドするための「Getting Started」ガイドを読む
- 2
ソースコードを取得してLLVMをビルドする
使う前に知っておきたいこと
- ソースからのビルドは大規模な作業で、コンパイルにかなりの時間がかかり、ディスク容量も多く必要です。
- READMEにはパッケージマネージャーを使ったインストール方法が記載されていないため、リポジトリからビルドする必要があります。
トピック
よくある質問
- llvm-project とは?
- LLVMコア、Clang C/C++フロントエンド、libc++、LLDリンカーなどを含む、モジュール式のコンパイラおよびツールチェーン技術群。 LLVMは、最適化コンパイラやオプティマイザー、ランタイム環境を構築するためのツールキットです。LLVMのコアコンポーネントは、中間表現を処理してオブジェクトファイルに変換するために必要なライブラリ、ツール、ヘッダーファイルを提供します。これには、アセンブラー、逆アセンブラー、ビットコードアナライザー、ビットコードオプティマイザーが含まれます。
- llvm-project は無料で使えますか?ライセンスは?
- llvm-project は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- llvm-project は今もメンテナンスされていますか?
- 活発にメンテナンス中。llvm-project の最終コミットは 2026年10月22日 です。
- llvm-project は何に使えますか?
- 新しいプログラミング言語向けのコンパイラやコードジェネレーターを構築する。 ClangツールチェーンでCまたはC++のプロジェクトをコンパイルする。 LLVM中間表現を対象とする最適化パスを作成する。 LLDリンカーでネイティブバイナリをリンクする。
- llvm-project のインストール方法は?
- LLVMをソースからビルドするための「Getting Started」ガイドを読む ソースコードを取得してLLVMをビルドする
- llvm-project はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/llvm/llvm-project
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Goは、シンプルで信頼性が高く、効率的なソフトウェアを開発するためのオープンソースプログラミング言語です。
LLVMを基盤とするGoコンパイラ。マイクロコントローラー、WebAssembly(WASM/WASI)、コマンドラインツール向けにビルドできます。
wasm-optとJavaScriptビルド(binaryen.js)を備えた、WebAssembly向けのC++コンパイラ・最適化ライブラリ。
対象環境で動作するよう、次世代のJavaScript構文を変換するJavaScriptコンパイラー。
依存ライブラリ不要で高速にコンパイルでき、CからVへの自動変換にも対応する、保守しやすいソフトウェア向けのシンプルなコンパイル言語。