一 安装环境
系统版本ubuntu-10.10 (建议不要用10.10以上的版本,我用12.10出现了大量的问题)
安装镜像是 ubuntu-10.10-beta-desktop-i386.iso
硬件 HP-Z800 以及VM虚拟机环境都测试成功
需要连网环境以及软件源。(湖南大学校园网锐捷登陆方法见附录A)
ubuntu-10.10 软件源的设置:
http://blog.csdn.net/a8887396/article/details/8753535
二 gcc安装
由于sesc当初是使用gcc3.4.x编译,所以使用相同的编译器不容易出问题。
安装文件见gcc3.4.6目录
cpp-3.4_3.4.6-6ubuntu5_i386.deb gcc-3.4-base_3.4.6-6ubuntu5_i386.deb
gcc-3.4_3.4.6-6ubuntu5_i386.deb
cd gcc3.4.6
sudo chmod 777 *
sudo dpkg -i *
sudo ln -sf /usr/bin/gcc-3.4 /usr/bin/gcc
gcc -v 显示版本 gcc version 3.4.6 (Ubuntu 3.4.6-6ubuntu5)
三 安装sescutils
sescutils 是编译sesc能运行的程序的编译器。
1 修改sh软链接为bash
sudo ln -sf /bin/bash /bin/sh
ls -l /bin/sh 显示 /bin/sh -> /bin/bash 表示修改成功
2 安装前置软件(若你是和我一样是在新的系统中安装,这些你可能都要安装)
bison2.0和 flex (新版本的bison不行,若已有,删除,安装bison2.0)
bison的前置软件需要m4
sudo apt-get install m4
bison2.0的下载地址 http://ftp.gnu.org/gnu/bison/ 也可以用我下载好的
安装bison2.0
sudo tar zxvf bison-2.0.tar.gz
cd bison-2.0
sudo ./configure
sudo make
sudo make install
sudo apt-get install flex
安装 libncurses5-dev
若不安装,编译build-5-gdb时会提示 configure: error: no termcap library found
sudo apt-get install libncurses5-dev
3 要修改的地方
将 sescutils.tar.bz2 拷贝到$HOME目录下 (也就是 cd ~ 进入的目录)
tar -jxvf sescutils.tar.bz2
cd sescutils
cd build-mipseb-linux/
vim build-common
修改build-common中的三个参数为
GNUSRC=$HOME/sescutils/src
PREFIX=$HOME/sescutils/install
BUILD="i686-pc-linux-gnu"
4 编译步骤
sudo ./build-1-binutils
sudo ./build-2-gcc-core
sudo ./build-3-glibc
sudo ./build-4-gcc
sudo ./build-5-gdb
5 安装完成
四 安装SESC
1 下载方式
使用我修改过的包也可以,反正sesc已经从09年开始就没更新过了。
下面是在线下载的方法
安装 CVS
sudo apt-get install cvs
下载CVS
$cvs -d:pserver:anonymous@sesc.cvs.sourceforge.net:/cvsroot/sesc login
Note:需要输入密码 直接按回车
$cvs -z3 -d:pserver:anonymous@sesc.cvs.sourceforge.net:/cvsroot/sesc co -P sesc
2 安装需要的相关程序
sudo apt-get install binutils
sudo apt-get install zlib1g-dev
sudo apt-get install g++
这里我自动安装的是g++-4.3版本的 不知为何我找不到下面两个安装文件了
g++-3.4_3.4.6-1ubuntu2_i386
libstdc++6-dev_3.4.6-1ubuntu2_i386
据说是在 http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-3.4/ 下载的
但是我用g++-4.3来编译sesc 没有报奇怪的问题 发现问题再换吧。
3 解压sesc
在home目录下解压sesc.tar.gz
sudo tar zxvf sesc.tar.gz
生成一个sesc文件夹 其源码需要做些修改 如下: (我给的文件已经该过里)
sesc/src/libcore/FetchEngine.cpp 中 加上 #include <limits.h>
sesc/src/libmint/subst.cpp 中 include <linux/dirent.h>, 改为include<dirent.h>
在home下创建一个空文件夹 sesc-build 用来存放编译结果。
sudo mkdir sesc-build
cd sesc-build
../sesc/configure
sudo make
在报如下类似错误的文件中加上 #include <stdint.h>
ERROR‘uint32_t’ was not declared in this scope
在报如下类似错误的文件中加上 #include <limits.h>
ERROR: USHRT_CHAR undefined
测试是否安装成功
make testsim
五 第一个程序
1 修改路径参数
创建文件
vim setupsesc
写入如下内容
set +h
export PATH=$HOME/sescutils/install/bin:$HOME/sesc-build:$PATH
echo "setup finished"
注意PATH,如果你完全按照我的来,那可以照样写,若你把sescutils和sesc-build放在了别的目录,那仿照这个来
保存退出 再 source setupsesc
成功的标志是你可以在shell 中使用 mipseb-linux-gcc
2 第一个sesc程序
vim hellosesc.c
#include <stdio.h>
int main()
{
printf("hello world\n");
}
编译方法 如果不加这些选项 会报错
mipseb-linux-gcc -mips2 -mabi=32 -static -Wa,-non_shared -mno-abicalls -Wl,--script=/home/hnu/sescutils/src/mint.x,-static hellosec.c -o hello
如能编译 则编译成功
这是我从make testsim从看过来的命令 你可以把sesc/confs中你要用到的conf文件 拷贝到当前文件夹中以便使用
这个xx.conf是根据你的sesc模拟器编译时选项的不同 不同的 shared.conf也是一定需要的固定文件
cp /home/hnu/sesc-build/../sesc/confs/mem.conf sesc.conf
cp /home/hnu/sesc-build/../sesc/confs/shared.conf .
运行程序
./sesc.mem -h0x800000 -csesc.conf hello
static[0x45bc90-0x10000c8c] heap[0x10002000-0x10802000] stack[0x10802000-0x10ffa000] -> [0xa6000000-0xb6b9e370]
hello world
sesc.conf 是运行时的配置 和前面的-c中间没有空格 若没有指定 则指定当前文件夹下的sesc.conf
若两者都没有 则运行错误
hello是之前编译的可执行文件
若有输入数据 写在文件中tt.in
./sesc.mem -h0x800000 -csesc.conf hello << tt.in
3获得可视化报告
../sesc/scripts/report.pl sesc_hello.cRj18s
附录A 湖南大学锐捷登陆方法:
cd myxrgsu
将lib中的文件拷贝到 /usr/lib中:
cd lib
sudo cp * /usr/lib
将myxrgsu拷贝到/usr/bin中
cp myxrgsu /usr/bin
将IP设置为同一网段IP,网段IP参考同一局域网内其他人的IP
sudo ipconfig eth0 xxx.xxx.xxx.xxx up
设置网关 网关也看同一内网的人的网关
设置网关 sudo route add default gw xxx.xxx.xxx.xxx
运行程序
sudo myxrgsu
前两个是输入登陆锐捷的用户名和密码
DHCP 选择 1 使用DHCP
其他都默认0