1. 程式人生 > >ubuntu 12.04 64位安裝KLEE過程中遇到的問題

ubuntu 12.04 64位安裝KLEE過程中遇到的問題

問題一:llvm-gcc -v顯示gcc-4.6.3

情況:Ubuntu 12.04 64bit系統安裝後,修改為bupt的源,然後sudo apt-get update。當時網路環境不好,官網llvm-gcc 4.2版本無法下載,於是就sudo apt-get install llvm-gcc-4.6 了(用tab鍵,自動提示的4.6版本),後來換了網路環境又裝了一遍llvm-gcc-4.2。前三步均沒有問題,到了安裝uclibc時出現錯我,第6步安裝KLEE也無法通過。
錯誤如圖:
/bin/llvm-dis invalid bitcode signature
Error:Failed to find a working LLVM bitcode compiler.
這裡寫圖片描述

Maybe LLVM versions do not math
這裡寫圖片描述

解決方案:

sudo apt-get remove llvm-gcc-4.6

解除安裝 llvm-gcc-4.6後重新安裝llvm-gcc-4.2(第二步:build LLVM 2.9)

問題二:安裝stp時候可能需要自己新建install目錄

  cd stp-r940/
  mkdir install
  ./scripts/configure --with-prefix='pwd'/install --with-cryptominisat2
  make OPTIMIZE=-O2 CFLAGS_M32=
install 這裡是O2不是零2

問題三:full-path-to-xxxxx

$ ./configure --with-llvm=full-path-to-llvm --with-stp=full-path-to-stp/install --with-uclibc=full-path-to-klee-uclibc --enable-posix-runtime

這裡面的full-path-to-xxxx要寫相應的全目錄,比如我的full-path-to-llvm對應為/home/[使用者名稱]/projects/llvm-2.9

問題四: Unable to use stp/c_interface.h header

configure: error:Unable to use stp/c_interface.h header

這裡寫圖片描述
(圖片紅字有誤,是在安裝KLEE時候出現的錯誤)
解決方案:

cd /usr/include/   (這裡是系統的usr/include)
sudo mkdir stp
sudo cp ~/projects/stp-r940/src/c_interface/c_interface.h ./   (額~貌似我沒有拷貝到stp中,直接拷貝到了include目錄下,你可以拷貝到stp資料夾下試試)

問題五:make check假死狀態

這裡寫圖片描述
(到56%時候可能需要一段時間,但是沒死,虛擬機器也沒有當機,當時我以為虛擬機器崩了就重啟了)

問題六:測試時找不到標頭檔案klee.h

這裡寫圖片描述
error: klee/klee.h: No such file or directory
解決方法:
llvm-gcc -I ../../include -emit-llvm -c -g get_sign.c
Testing a Simple Regular Expression Library中提到編譯時要把/klee/include/庫連結上(使用-I 引數)

.bashrc最終新增的全域性變數

當你發現報的錯誤為找不到某個檔案時,可能是你的全域性變數沒配置。
最後我的.bashrc添加了一下內容:

export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
export PATH=$PATH:/home/[使用者名稱]/projects/llvm-gcc4.2-2.9-x86_64-linux/bin
export PATH=$PATH:/home/[使用者名稱]/projects/llvm-2.9/Release+Asserts/bin
export PATH=$PATH:/home/[使用者名稱]/projects/klee/Release+Asserts/bin   (如果此全域性變數不配置,klee執行時應該是找不到)
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6.3
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu