之前用Ubuntu18.04TLS配置DiskSim4.0一直不成功。看到很多博客说尽量用低版本的Ubuntu,保证是32位的系统。尝试过添加64位的兼容配置,但是过程太复杂,迫于种种选择了Ubuntu14.04 32位虚拟机进行配置。
这个步骤就很简单了(至少我这次没出什么玄学问题)。
1,下载DiskSim4.0
链接:https://www.pdl.cmu.edu/DiskSim/index.shtml
选择DiskSim4.0压缩包下载并在目录下解压。
tar xfz disksim-4.0.tar.gz
cd disksim-4.0
2,安装bison和flex
DiskSim需要安装bison和flex
sudo apt install bison flex
3,修正Makefile
直接make是会报错的,这是因为下载的DiskSim中有两个makefile存在语法错误。
(1)memsmodel/Makefile
其中第80行:
mems_seektest: mems_seektest.o libmems_internals.a
$(CC) -o $@ mems_seektest.o $(LDFLAGS) $(CFLAGS) -lmems_internals
这里的LDFLAGS变量包含了-lm,应该将$(LDFLAGS)移到-lmems_internals后面。改成:
mems_seektest: mems_seektest.o libmems_internals.a
$(CC) -o $@ mems_seektest.o $(CFLAGS) -lmems_internals $(LDFLAGS)
(2)src/Makefile
其中第35行
LDFLAGS = -lm -L. -ldisksim $(DISKMODEL_LDFLAGS) $(MEMSMODEL_LDFLAGS) \
$(LIBPARAM_LDFLAGS) $(LIBDDBG_LDFLAGS)
也是一样,需要加-lm放到最后。改成:
LDFLAGS = -L. -ldisksim $(DISKMODEL_LDFLAGS) $(MEMSMODEL_LDFLAGS) \
$(LIBPARAM_LDFLAGS) $(LIBDDBG_LDFLAGS) -lm
如果下载的是disksim-4.0-dixtrac那么还需要在dixtrac/Makefile里,LDFAGS的定义中的-lm移到最后:
LDFLAGS = -L. -lm -l$(LIBNAME) -ldxtools
$(LIBDISKSIM_LDFLAGS)
$(MEMSMODEL_LDFLAGS)
$(DISKMODEL_LDFLAGS)
$(LIBPARAM_LDFLAGS)
$(LIBDDBG_LDFLAGS)
$(ST_LDFLAGS)
验证
至此,已经可以编译并且运行成功了。
make
cd valid
./runvalid
如果没有问题的话就恭喜你!DiskSim终于配好了!