可能ですが、あなたが言及したファイルと同様に、.o
最初にそれらを単一のバイナリにリンクする必要があります。
1 組のビットコード ファイルがあるとします。
$ llvm-dis a.bc -o -
; ModuleID = 'a.bc'
@0 = global [13 x i8] c"Hello world!\0A"
declare i32 @printf(i8*)
define void @f() {
%1 = call i32 @printf(i8* getelementptr inbounds ([13 x i8]* @0, i64 0, i64 0))
ret void
}
$ llvm-dis b.bc -o -
; ModuleID = 'b.bc'
declare void @f()
define i32 @main() {
call void @f()
ret i32 0
}
これはうまくいきません:
$ lli b.bc
LLVM ERROR: Program used external function 'f' which could not be resolved!
しかし、それらをリンクすると、次のようになります。
$ llvm-ld a.bc b.bc -disable-opt -o c
$ llvm-dis c.bc -o -
; ModuleID = 'c.bc'
@0 = global [13 x i8] c"Hello world!\0A"
declare i32 @printf(i8*)
define void @f() {
%1 = call i32 @printf(i8* getelementptr inbounds ([13 x i8]* @0, i64 0, i64 0))
ret void
}
define i32 @main() {
call void @f()
ret i32 0
}
$ lli c.bc
Hello world!