Bitblaze环境搭建之vine的编译和安装

来源:互联网 发布:软件回归测试 编辑:程序博客网 时间:2024/06/08 14:29

安装环境为ubuntu 12.04 LTS(32位和64位皆可)

1.在对vine源码进行编译之前需要安装一些库文件和编译器,步骤比较繁琐,但这些步骤已经被写在了脚本中,我们可以通过执行脚本来完成这些步骤:

bash docs/install-vine-release.sh 

#!/bin/bash# Instructions for installing Vine release 1.0 on Ubuntu 9.04 Linux 32-bit# Commands that require root access are preceded with "sudo".# The prerequisite packages are about 300MB of downloads, and require# 1.1GB once installed; Vine itself requires about 320MB.# Last tested 2009-08-17# This script will build Vine in a "$HOME/bitblaze" directory,# assuming that vine-1.0.tar.gz is in /tmp.cd ~mkdir bitblazecd bitblaze# Prerequisite packages:# For compiling C++ code:sudo apt-get install g++# For OCaml support:sudo apt-get install ocaml ocaml-findlib libgdome2-ocaml-dev camlidl \                     libextlib-ocaml-dev ocaml-native-compilers# Ocamlgraph >= 0.99c is required; luckily the version in Ubuntu 9.04# is now new enough.sudo apt-get install libocamlgraph-ocaml-dev# For the BFD library:sudo apt-get install binutils-dev# For building documentation:sudo apt-get install texlive texlive-latex-extra transfig hevea# Vine itself:tar xvzf /tmp/vine-1.0.tar.gz(cd vine-1.0 && ./configure)(cd vine-1.0 && make)(cd vine-1.0/doc/howto && make doc)

2.make 过程中遇到的问题及解决方法:


问题一:

error: new declaration ‘char* 
basename(const char*)’ 


解决方法(https://groups.google.com/forum/#!topic/bitblaze-users/WXGavr77eqs):

Index: libasmir/src/disasm/asm_program.cpp 
=================================================================== 
--- libasmir/src/disasm/asm_program.cpp (older version) 
+++ libasmir/src/disasm/asm_program.cpp (fixed version) 
@@ -7,6 +7,11 @@ 
 #include "debug.h" 
 #include "asm_program.h" 
 #include "objdump.h" 
+/* Some versions of glibc and the binutils libiberty library give 
+   conflicting prototypes for basename(). We don't use that function 
+   anyway, but to work around the problem, make libliberty.h think 
+   that it has already been declared. */ 
+#define HAVE_DECL_BASENAME 1 
 #include "libiberty.h"



问题二:

error: a cast to a type other than an integral or enumeration type cannot appear in a constant-expression

解决方法(https://groups.google.com/forum/#!msg/bitblaze-users/1hjB3lxuXDg/aa55Ubg-pUQJ):

VEX's definition of "offsetof" is traditional, but it's not actually 
allowed by the rules in the C standard, and GCC started enforcing 
these rules in version 4.6, giving the errors you saw. 

The best fix is to include the compiler's standard definition of 
"offsetof", which is guaranteed to work correctly. You can do this by 
adding "#include <stddef.h>" near the beginnings of irtoir-i386.cpp 
and irtoir-arm.cpp. 


3.

 cd bitblaze/vine ./trace_utils/trace_reader -trace examples/five.trace | grep T1

./trace_utils/appreplay -trace examples/five.trace \  -stp-out five.stp -ir-out five.il -wp-out five.wp






参考资料:

http://bitblaze.cs.berkeley.edu/release/vine-1.0/howto.html

https://groups.google.com/forum/#!topic/bitblaze-users/WXGavr77eqs

https://groups.google.com/forum/#!topic/bitblaze-users/Zpg7Ddzngns

https://groups.google.com/forum/#!topic/bitblaze-users/sTTPlFEzWo0

https://groups.google.com/forum/#!msg/bitblaze-users/1hjB3lxuXDg/aa55Ubg-pUQJ

0 0