- 適用於 JDK 23 的 GraalVM (最新)
- 適用於 JDK 24 的 GraalVM (搶先體驗)
- 適用於 JDK 21 的 GraalVM
- 適用於 JDK 17 的 GraalVM
- 封存
- 開發版本
GraalVM LLVM 執行環境
GraalVM LLVM 執行環境可以執行可以轉換為 LLVM 位元碼的程式語言。這包括 C/C++、Fortran 和其他語言。
與通常用於 LLVM 語言的靜態編譯相比,GraalVM 的 lli
工具實作首先解譯 LLVM 位元碼,然後使用 Graal 編譯器動態編譯程式的熱點部分。這允許與 GraalVM 支援的動態語言無縫互通。
開始使用 #
GraalVM LLVM 執行環境可以作為獨立發行版使用。您可以下載基於 Oracle GraalVM 或 GraalVM 社群版的獨立版本。
-
下載適用於您作業系統的 LLVM 24.0 獨立版本
-
解壓縮封存檔
注意:如果您使用的是 macOS Catalina 或更新版本,您可能需要移除隔離屬性
sudo xattr -r -d com.apple.quarantine <archive>.tar.gz
解壓縮
tar -xzf <archive>.tar.gz
-
獨立版本除了原生啟動器外,還隨附 JVM。檢查版本以查看 GraalVM LLVM 執行環境是否已啟用
./path/to/bin/lli --version
現在您可以使用 LLVM 位元碼格式執行程式。
LLVM 工具鏈 #
此外,GraalVM LLVM 執行環境還捆綁了預先建立的 LLVM 工具鏈。
- 使用
lli
的--print-toolchain-path
引數取得工具鏈的位置./path/to/bin/lli --print-toolchain-path
- 設定
LLVM_TOOLCHAIN
環境變數export LLVM_TOOLCHAIN=$(./path/to/bin/lli --print-toolchain-path)
- 然後檢視工具鏈路徑的內容以取得可用工具的清單
ls $LLVM_TOOLCHAIN
現在您可以使用 GraalVM LLVM 工具鏈中的 clang
將 C/C++ 程式碼編譯為 LLVM 位元碼。
執行 LLVM 位元碼 #
若要在 GraalVM LLVM 執行環境上執行 LLVM 語言,二進位檔案需要使用嵌入式位元碼進行編譯。編譯指南提供有關如何將程式編譯為 LLVM 位元碼以及預期檔案格式的資訊。
以 LLVM 位元碼格式執行程式的語法為
lli [LLI options] [GraalVM options] [polyglot options] <bitcode file> [program args]
此處,<位元碼檔案>
是具有嵌入式 LLVM 位元碼的已編譯程式。請參閱LLI 命令選項或使用 lli --help
取得選項說明。
例如,將此 C 程式碼放入名為 hello.c
的檔案中
#include <stdio.h>
int main() {
printf("Hello from GraalVM!\n");
return 0;
}
然後將 hello.c
編譯為具有嵌入式 LLVM 位元碼的可執行檔 hello
,並執行如下
$LLVM_TOOLCHAIN/clang hello.c -o hello
lli hello
注意:LLVM 位元碼與平台相關。程式必須針對適當的平台編譯為位元碼。