LLVMコミュニティのメールメッセージからJITされたコードをコンパイルして実行するための手順を実行しています。
[LLVMdev]MCJITと万華鏡のチュートリアル
ヘッダーファイル:
// foo.h
extern void foo(void);
単純なfoo()関数の関数:
//foo.c
#include <stdio.h>
void foo(void) {
puts("Hello, I'm a shared library");
}
そして主な機能:
//main.c
#include <stdio.h>
#include "foo.h"
int main(void) {
puts("This is a shared library test...");
foo();
return 0;
}
foo.cを使用して共有ライブラリを構築します。
gcc foo.c -shared -o libfoo.so -fPIC
main.cファイルのLLVMビットコードを生成します。
clang -Wall -c -emit-llvm -O3 main.c -o main.bc
そして、jit(およびMCJIT)を介してLLVMビットコードを実行し、目的の出力を取得します。
lli -load=./libfoo.so main.bc
lli -use-mcjit -load=./libfoo.so main.bc
clang出力をlliにパイプすることもできます:
clang -Wall -c -emit-llvm -O3 main.c -o - | lli -load=./libfoo.so
出力
This is a shared library test...
Hello, I'm a shared library
ソースから取得
Linux上のGCCとの共有ライブラリ