GraalVM LLVM 執行環境

GraalVM LLVM 執行環境可以執行可以轉換為 LLVM 位元碼的程式語言。這包括 C/C++、Fortran 和其他語言。

與通常用於 LLVM 語言的靜態編譯相比,GraalVM 的 lli 工具實作首先解譯 LLVM 位元碼,然後使用 Graal 編譯器動態編譯程式的熱點部分。這允許與 GraalVM 支援的動態語言無縫互通。

開始使用 #

GraalVM LLVM 執行環境可以作為獨立發行版使用。您可以下載基於 Oracle GraalVM 或 GraalVM 社群版的獨立版本。

  1. 下載適用於您作業系統的 LLVM 24.0 獨立版本

  2. 解壓縮封存檔

    注意:如果您使用的是 macOS Catalina 或更新版本,您可能需要移除隔離屬性

     sudo xattr -r -d com.apple.quarantine <archive>.tar.gz
    

    解壓縮

     tar -xzf <archive>.tar.gz
    
  3. 獨立版本除了原生啟動器外,還隨附 JVM。檢查版本以查看 GraalVM LLVM 執行環境是否已啟用

     ./path/to/bin/lli --version
    

現在您可以使用 LLVM 位元碼格式執行程式。

LLVM 工具鏈 #

此外,GraalVM LLVM 執行環境還捆綁了預先建立的 LLVM 工具鏈。

  1. 使用 lli--print-toolchain-path 引數取得工具鏈的位置
     ./path/to/bin/lli --print-toolchain-path
    
  2. 設定 LLVM_TOOLCHAIN 環境變數
     export LLVM_TOOLCHAIN=$(./path/to/bin/lli --print-toolchain-path)
    
  3. 然後檢視工具鏈路徑的內容以取得可用工具的清單
     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 位元碼與平台相關。程式必須針對適當的平台編譯為位元碼。

延伸閱讀 #

與我們聯繫