[klee-dev] KLEE "make" errors with LLVM-3.4.2

Dan Liew dan at su-root.co.uk
Thu Apr 13 23:30:10 BST 2017


On 13 April 2017 at 13:11, Zhiyi Zhang <xianlingzibiying at gmail.com> wrote:
>
> Hi,
>
> I tried building KLEE on Ubuntu 16.04 LTS. I have built LLVM-3.4.2 (put Clang into /llvm/tools,then cmake llvm )and STP-2.1.2. After I configured KLEE with "cmake",
>
> cmake -DENABLE_SOLVER_STP=ON  -DENABLE_POSIX_RUNTIME=ON -DENABLE_KLEE_UCLIBC=ON -DKLEE_UCLIBC_PATH=../klee-uclibc  -DENABLE_SYSTEM_TESTS=ON  -DENABLE_UNIT_TESTS=OFF  ../klee
>
>
>  I built KLEE with "make", but there were some errors about "kleaver".
>
> "Linking CXX executable ../../bin/kleaver
>
> ...............................
>
> ../../lib/libkleeSupport.a(CompressionStream.cpp.o):(.rodata._ZTIN4klee21compressed_fd_ostreamE[_ZTIN4klee21compressed_fd_ostreamE]+0x10): undefined reference to `typeinfo for llvm::raw_ostream'
>
> collect2: error: ld returned 1 exit status
>
> tools/kleaver/CMakeFiles/kleaver.dir/build.make:105: recipe for target 'bin/kleaver' failed
>
> make[2]: *** [bin/kleaver] Error 1
>
> CMakeFiles/Makefile2:688: recipe for target 'tools/kleaver/CMakeFiles/kleaver.dir/all' failed
>
> make[1]: *** [tools/kleaver/CMakeFiles/kleaver.dir/all] Error 2
>
> Makefile:127: recipe for target 'all' failed
>
> make: *** [all] Error 2"
>

The linking errors are related to RTTI (run time type information).
This is because you built LLVM 3.4 CMake and the built `llvm-config`
binary has a bug where it doesn't
show the `-fno-rtti` flag.

You have two options to fix this

1. Use the LLVM build that you produced using CMake but reconfigure
KLEE by forcing the `-fno-rtti` flag. You will need to make a new
build directory when you do this. Something like this

```
CFLAGS="-fno-rtti" CXXFLAGS="-fno-rtti" cmake -DENABLE_SOLVER_STP=ON
-DENABLE_POSIX_RUNTIME=ON -DENABLE_KLEE_UCLIBC=ON
-DKLEE_UCLIBC_PATH=../klee-uclibc  -DENABLE_SYSTEM_TESTS=ON
-DENABLE_UNIT_TESTS=OFF  ../klee
```

2. Rebuild LLVM using its autoconf/Makefile build system.

This issue seem to keep appearing so we should improve our
documentation to make it explicit that people should avoid building
LLVM 3.4 using CMake.

HTH,
Dan.



More information about the klee-dev mailing list