BitBlaze Vine和TEMU的安装

来源:互联网 发布:nginx动静分离 编辑:程序博客网 时间:2024/06/03 11:05

在安装之前自然需要下载Vine和TEMU的源代码啦。Vine的官网(戳这里)和TEMU的官网(戳这里)分别提供了Vine和TEMU的源码下载。在下载完成后,下面开始Vine和TEMU的安装。

 

一、gcc-3.4的安装和设置

本次安装的平台是Ubuntu 12.04,使用的编译器是gcc-3.4.6。Ubuntu 12.04的默认编译器是gcc-4.6,但是TEMU安装的编译只支持gcc-3.4版本(没错,3.3不行,4.x也不行,%>_<%)。结果就是,在正式开始进行安装时,还需要先将编译器的版本“升级”为3.4.6。

1.      确认一下这些都已经安装了

sudo apt-get install ncurses-dev

sudo apt-get install bison

sudo apt-get install flex

sudo apt-get install build-essential

2.      下载安装gcc-3.4.6

下载地址:戳我呀戳我呀戳我呀

安装gcc-3.4.6需要的包有:

gcc-3.4-base_3.4.6-6ubuntu3_i386.deb

gcc-3.4_3.4.6-6ubuntu3_i386.deb

cpp-3.4_3.4.6-6ubuntu3_i386.deb

g++-3.4_3.4.6-6ubuntu3_i386.deb

libstdc++6-dev_3.4.6-6ubuntu3_i386.deb

将这些包放在一个目录下,本文中为/home/gcc-3.4。

进入该目录并执行安装命令:

cd /home/gcc-3.4

dpkg –i *.deb

3.      切换默认的gcc版本

gcc-3.4.6安装完成之后需要将它设置成默认编译器,命令如下:

update-alternatives –config gcc

可以看到系统里现有的版本如下:


选择我们需要的gcc-3.4版本为默认(automode),即输入0或1。

到这里gcc-3.4.6已经安装并且设置完毕。可以通过命令:gcc –v来查看当前的版本号。

 

二、Vine的安装

1.      本文中的Vine和TEMU都安装在目录/home/bitblaze下。首先创建该目录,并将Vine解压到该目录下:

cd ~

mkdir bitblaze

cd bitblaze

tar xvzfvine-1.0.tar.gz

此时,在解压后的目录/home/bitblaze/vine-1.0/doc下能够找到文件install-vine-release.sh文件,里面将会指导你安装vine的步骤。本文之后的步骤与之相同。

2.      安装编译Vine使用的g++:

sudo apt-get install g++

3.      由于Vine的后端使用了OCaml,需要安装OCaml支持部件:

sudo apt-get install ocamlocaml-findlib libgdome2-ocaml-dev camlidl  libextlib-ocaml-dev ocaml-native-compilers

sudo apt-get installlibocamlgraph-ocaml-dev

4.      安装BFD库:

sudo apt-get install binutils-dev

5.      安装building documentation

sudo apt-get install texlive texlive-latex-extratransfig hevea

6.      终于到了安装Vine:

cd vine-1.0

./configure

make

cd ../doc/howto

make doc

至此,Vine已经安装完成。

7.      安装Vine遇到的一些问题

1) 在执行sudo make的时候,遇到:

In file included from./disasm/asm_program.cpp:16:0:

/usr/include/libiberty.h:106:36:error: newdeclaration ‘char* basename(const char*)’

/usr/include/string.h:603:28:error:ambiguates old declaration ‘const char* basename(const char*)’

......

解决方法:

编辑文件libasmir/src/disasm/asm_program.cpp,在#include"libiberty.h"前添加:

#defineHAVE_DECL_BASENAME 1

2)再次sudo make,又出现新的错误:

./vex/irtoir-i386.cpp:In function‘std::string reg_offset_to_name(int)’:

./vex/irtoir-i386.cpp:269:14:error: a castto a type other than an integral or enumeration type cannot appearin aconstant-expression

……

在头文件libvex_basictypes.h使用offset的代码前面添加:

#include<stddef.h>

用系统的offsetof定义取代vine的定义

再次sudo make就可以通过了


三、TEMU的安装

1.      同样的,先将TEMU解压到bitblaze目录下:

cd ~

cd bitblaze

tar xvzf/tmp/temu-1.0.tar.gz

在解压后的目录/home/bitblaze/temu-1.0/doc下有文件install-temu-release.sh知道我们如何安装temu。文档中,除了安装gcc的方法不能用外,其他的都是正确的。本节,剩余的部分与文档内容相同。

2.      安装QEMU相关的内容

sudo apt-get install qemu

sudo apt-getbuild-dep qemu

3.      安装TEMU

cd temu-1.0

./configure --target-list=i386-softmmu --proj-name=tracecap  --cc=gcc-3.4--prefix=$(pwd)/install

make

make install

至此,TEMU安装完成。

4.      TEMU安装遇到的问题

在执行编译指令

./configure --target-list=i386-softmmu --proj-name=tracecap  --cc=gcc-3.4 --prefix=$(pwd)/install

时,产生错误,显示/usr/lib/ld: cannot find –lgcc_s

解决方法:

首先使用指令:locate libgcc_s.so在/usr/lib/i386-linux-gnu目录下面找到libgcc_s.so.1

进入/usr/lib目录:cd /usr/lib

建立新的链接:sudo ln –sv /lib/i386-linux-gnu/libgcc_s.co.1 libgcc_s.so。成功建立新的链接之后,问题解决。

 

原创粉丝点击