如何使用C中的函数编译llvm代码文件?

时间:2014-04-12 22:11:13

标签: c llvm check-framework

有没有办法在llvm(* .ll)中编译一个使用C函数的文件?

我使用check C创建了一个测试,并将其编译为:

$clang  counter_i.c counter_test_check.c   -lcheck

这样,我正在使用check中的库,但我需要生成使用来自check的库的llvm代码。当我尝试这个命令时:

$clang -S -emit-llvm counter_i.c counter_test_check.c   

并尝试执行代码:

$lli-mp-3.5 counter_test_check.ll 

我收到了这个答案:

LLVM ERROR: Program used external function 'srunner_create' which could not be resolved!

我认为解决方案是做一些事情:

$clang -S -emit-llvm counter_i.c counter_test_check.c   -lcheck

但它不受支持。

我想在LLVM JIT-compiled program cannot find external functions

上可以找到类似的答案

2 个答案:

答案 0 :(得分:3)

是的,LLVM有一个C接口(尽管与C ++ API相比可能存在一些限制):

http://llvm.org/docs/doxygen/html/group__LLVMC.html

答案 1 :(得分:1)

我找到了一个解决方案:

clang -S -emit-llvm -c counter_test_check.c counter_i.c  
clang -o executable counter_test_check.ll counter_i.ll  -lcheck
./executable

它通过两个步骤进行编译,这样我就可以使用其他llvm源文件。