Flashsim + Disksim安装
OS:uBuntu 10.04(必须是32bit,62bit不行,这里指的是os的位数,而不是机器的位数,可以用64bit的机器安装32bit的os)
GCC:2.95
bison & flex-old(刚开始我安装的flex,编译不通过,过会儿详细说)
disksim-3.0
flashsim(src)
1.安装gcc低版本
Disksim不支持高版本的gcc,所以笔者安装的低版本的gcc(gcc-2.95版本),下载地址为:
http://old-releases.ubuntu.com/ubuntu/pool/universe/g/gcc-2.95/
将下列五个文件依次下载:
cpp-2.95_2.95.4-24_i386.deb;
gcc-2.95_2.95.4-24_i386.deb;
g++-2.95_2.95.4-24_i386.deb;
libstdc++2.10-glibc2.2_2.95.4-24_i386.deb;
libstdc++2.10-dev_2.95.4-24_i386.deb
下载完按如上顺序依次强制安装,终端命令为:
sudo dpkg --force-depends -ixxx.deb
然后更改软连接,执行命令:
sudo ln -fs /usr/bin/gcc-2.95/usr/bin/gcc
查看gcc版本:gcc –v ,可以看到版本为gcc-2.95.4 。
这样,当需要编译软件时,默认使用的gcc版本就是gcc-2.95.4 。
2、安装bison和flax
可直接在线安装,终端命令分别为:
sudo apt-get install bison
sudo apt-get install flex
装完使用bison –v,查看版本为bison (GNU Bison) 2.4.1。
使用flex –v看到版本为flex 2.5.35
接下来就正式进入flashsim的安装了。这个过程要注意,每次重新编译安装所用到的disksim3.0和flashsim的源码包都要选择最原始的压缩包,然后解压操作。
3、编译disksim-3.0
解压disksim-3.0.tar.gz,假设解压到当前用户主目录下,解压后文件名为disksim-3.0
whm@ubuntu:~$ cddisksim-3.0/ #进入disksim-3.0目录
whm@ubuntu:~/disksim-3.0$make #编译整个工程
如没有提示编译错误,则可以进入/disksim-3.0/valid目录下,运行runvalid文件。若能准确运行,说明disksim-3.0的编译是正确的。
注意:由于处笔者安装的flex版本不多,导致disksim3.0进行make时候报错,错误如下红色:
make
make: *** No targets specifiedand no makefile found. Stop.
wyj@jsi-desktop:~$ cddisksim-3.0/
wyj@jsi-desktop:~/disksim-3.0$make
make -C libddbg; make -Clibparam; make -C diskmodel; make -C src;
make[1]: Entering directory`/home/wyj/disksim-3.0/libddbg'
cc -g -I../libparam -c -o ddbg_assert.o ddbg_assert.c
In file included from/usr/include/signal.h:394,
from ddbg_assert.c:38:
/usr/include/bits/pthreadtypes.h:99:warning: unnamed struct/union that defines no instances
cc -g -I../libparam -c -o ddbg_trace.o ddbg_trace.c
In file included from/usr/include/sys/types.h:270,
from /usr/include/stdlib.h:320,
from ddbg_trace.c:64:
/usr/include/bits/pthreadtypes.h:99:warning: unnamed struct/union that defines no instances
ar cru libddbg.a ddbg_assert.oddbg_trace.o
mkdir -p include/libddbg lib
cp libddbg.h include/libddbg
cp libddbg.a lib
make[1]: Leaving directory`/home/wyj/disksim-3.0/libddbg'
make[1]: Entering directory`/home/wyj/disksim-3.0/libparam'
cc -g-I/home/wyj/disksim-3.0/libddbg/include -Wall -c -o util.o util.c
In file included from/usr/include/sys/types.h:270,
from/usr/include/stdlib.h:320,
from util.c:32:
/usr/include/bits/pthreadtypes.h:99:warning: unnamed struct/union that defines no instances
bitvector.h:50: warning:`bit_zero' defined but not used
bitvector.h:54: warning:`bit_setall' defined but not used
bison -plibparam --defineslibparam.y
cc -g-I/home/wyj/disksim-3.0/libddbg/include -Wall -c -o libparam.tab.o libparam.tab.c
In file included from/usr/include/sys/types.h:270,
from /usr/include/stdlib.h:320,
from libparam.y:33:
/usr/include/bits/pthreadtypes.h:99:warning: unnamed struct/union that defines no instances
libparam.tab.c: In function`libparamparse':
libparam.tab.c:1345: warning:implicit declaration of function `libparamlex'
libparam.y:107: warning: implicitdeclaration of function `lp_inst_list'
libparam.y:303: warning: implicitdeclaration of function `dumb_split'
flex -Plibparam libparam.lex
libparam.lex:85: warning, rulecannot be matched
cc -g -I/home/wyj/disksim-3.0/libddbg/include-Wall -c -o lex.libparam.olex.libparam.c
In file included from/usr/include/sys/types.h:270,
from/usr/include/stdlib.h:320,
from lex.libparam.c:41:
/usr/include/bits/pthreadtypes.h:99:warning: unnamed struct/union that defines no instances
libparam.lex: In function`libparamlex':
libparam.lex:141:`yy_current_buffer' undeclared (first use in this function)
libparam.lex:141: (Eachundeclared identifier is reported only once
libparam.lex:141: for each functionit appears in.)
libparam.lex: At top level:
lex.libparam.c:1395: warning:`yyunput' defined but not used
make[1]: *** [lex.libparam.o]Error 1
make[1]: Leaving directory`/home/wyj/disksim-3.0/libparam'
make[1]: Entering directory`/home/wyj/disksim-3.0/diskmodel'
make -C modules
make[2]: Entering directory`/home/wyj/disksim-3.0/diskmodel/modules'
/home/wyj/disksim-3.0/libparam/mod.pldm disk.modspec
indent dm_disk_param.c2>/dev/null >/dev/null || true
/home/wyj/disksim-3.0/libparam/mod.pldm layout_g1.modspec
indent dm_layout_g1_param.c2>/dev/null >/dev/null || true
/home/wyj/disksim-3.0/libparam/mod.pldm mech_g1.modspec
indent dm_mech_g1_param.c2>/dev/null >/dev/null || true
/home/wyj/disksim-3.0/libparam/mod.pldm layout_g1_zone.modspec
indent dm_layout_g1_zone_param.c2>/dev/null >/dev/null || true
/home/wyj/disksim-3.0/libparam/make_modules_h.pldm *.modspec > modules