(以内容“KLEE: 某用symbolic execution的方法来产生能够遍历不同程序路径的test cases的工具,可以找到bug。 == 编译 == 如果编译KLEE的时候说: ...”创建新页面)
 
第8行: 第8行:
 
其实不加到path也可以,给configure加个参数,configure就不用自己到path里找llvm-gcc了。
 
其实不加到path也可以,给configure加个参数,configure就不用自己到path里找llvm-gcc了。
 
加完了重新configure一下llvm,再编译安装就可以了。
 
加完了重新configure一下llvm,再编译安装就可以了。
 +
 +
== 重现 ==
 +
重现的时候可能碰到这个问题:
 +
    islower.c:(.text+0x3f): undefined reference to `klee_make_symbolic'
 +
虽然你在链接里面已经加了libkleeRuntest.a。
 +
如果你把它换成这个.a里那个唯一的.o,那就换个错误:
 +
    In function `klee_make_symbolic':
 +
    klee/runtime/Runtest/intrinsics.c:76: undefined reference to `kTest_fromFile'
 +
于是如果你再把KTest.o加进来,那就可以编译过……
 +
 +
问题在于:
 +
1. 其实还依赖另一个.a,libkleeBasic.a
 +
2. 顺序问题
 +
 +
我不知道为啥会有这个问题,或许以后会了解。反正现在知道的是,如果你用了.a的东西,你就要把.a放到后面。
 +
所以要这么编译:
 +
    gcc islower.c klee/lib/libkleeRuntest.a klee/lib/libkleeBasic.a  -Iklee/include/
 +
然后就没问题了……

2011年9月16日 (五) 17:54的版本

KLEE: 某用symbolic execution的方法来产生能够遍历不同程序路径的test cases的工具,可以找到bug。

编译

如果编译KLEE的时候说:

   Bytecode libraries require LLVM capable compiler but none is available ****

那就是说,你的LLVM在configure的时候,没找到llvm-gcc。 基本上这是因为你没在编LLVM之前装llvm-gcc,或者装完了没加到path里去。 其实不加到path也可以,给configure加个参数,configure就不用自己到path里找llvm-gcc了。 加完了重新configure一下llvm,再编译安装就可以了。

重现

重现的时候可能碰到这个问题:

   islower.c:(.text+0x3f): undefined reference to `klee_make_symbolic'

虽然你在链接里面已经加了libkleeRuntest.a。 如果你把它换成这个.a里那个唯一的.o,那就换个错误:

   In function `klee_make_symbolic':
   klee/runtime/Runtest/intrinsics.c:76: undefined reference to `kTest_fromFile'

于是如果你再把KTest.o加进来,那就可以编译过……

问题在于: 1. 其实还依赖另一个.a,libkleeBasic.a 2. 顺序问题

我不知道为啥会有这个问题,或许以后会了解。反正现在知道的是,如果你用了.a的东西,你就要把.a放到后面。 所以要这么编译:

   gcc islower.c klee/lib/libkleeRuntest.a klee/lib/libkleeBasic.a  -Iklee/include/

然后就没问题了……