(以内容“KLEE: 某用symbolic execution的方法来产生能够遍历不同程序路径的test cases的工具,可以找到bug。 == 编译 == 如果编译KLEE的时候说: ...”创建新页面) |
(→重现) |
||
(未显示同一用户的1个中间版本) | |||
第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/
然后就没问题了……