我在使用 Simplescalar 编译 UCSD univ(http://cseweb.ucsd.edu/~calder/simpoint/simplescalar-bbv.htm)开发的基本块向量(BBV)时遇到了一些问题。 没有 BBV,我成功编译了 simplescalar。
解压BBVtracker后,共有三个文件:修改后的sim-fast.c、bbtracker.h和bbtracker.c。我将所有三个文件复制到 simplesim-3.o 目录,然后在更新 Makefile 后进行 config-pisa & make:
1,将 bbtracker.h 附加到 HDRS,将 bbtracker.c 附加到 SRCS,将 bbv.$(OEXT) 附加到 $OBJS
2、在Makefile末尾添加bbv.o标签。
SRCS = main.c sim-fast.c sim-safe.c sim-cache.c sim-profile.c \
sim-eio.c sim-bpred.c sim-cheetah.c sim-outorder.c \
memory.c regs.c cache.c bpred.c ptrace.c eventq.c \
resource.c endian.c dlite.c symbol.c eval.c options.c range.c \
eio.c stats.c endian.c misc.c bbtracker.c \
target-pisa/pisa.c target-pisa/loader.c target-pisa/syscall.c \
target-pisa/symbol.c \
target-alpha/alpha.c target-alpha/loader.c target-alpha/syscall.c \
target-alpha/symbol.c
HDRS = syscall.h memory.h regs.h sim.h loader.h cache.h bpred.h ptrace.h \
eventq.h resource.h endian.h dlite.h symbol.h eval.h bitmap.h \
eio.h range.h version.h endian.h misc.h bbtracker.h \
target-pisa/pisa.h target-pisa/pisabig.h target-pisa/pisalittle.h \
target-pisa/pisa.def target-pisa/ecoff.h \
target-alpha/alpha.h target-alpha/alpha.def target-alpha/ecoff.h
#
# common objects
#
OBJS = main.$(OEXT) syscall.$(OEXT) memory.$(OEXT) regs.$(OEXT) \
loader.$(OEXT) endian.$(OEXT) dlite.$(OEXT) symbol.$(OEXT) \
eval.$(OEXT) options.$(OEXT) stats.$(OEXT) eio.$(OEXT) \
range.$(OEXT) misc.$(OEXT) machine.$(OEXT) bbv.$(OEXT)
.c.$(OEXT): # I dnot understand this LABEL.
$(CC) $(CFLAGS) -c $*.c
bbv.$(OEXT): host.h misc.h machine.h machine.def endian.h version.h dlite.h bbtracker.h
main.$(OEXT): host.h misc.h machine.h machine.def endian.h version.h dlite.h
main.$(OEXT): regs.h memory.h options.h stats.h eval.h loader.h sim.h
运行make后,出现错误:
make[1]:离开目录`/opt/simplescalar/simplesim-3.0/libexo' gcc -o sim-fast `./sysprobe -flags` -DDEBUG -O0 -g -Wall sim-fast.o main.o syscall.o memory.o regs.o loader.o endian.o dlite.o symbol.o eval.o options.o stats.o eio.o range.o Misc.o machine.o bbv.o libexo/libexo.a `./sysprobe -libs` -lm gcc:错误:bbv.o:没有这样的文件或目录 make: *** [sim-fast] 错误 1
显然,bbv.o 没有生成。看来我添加 bbv.o 的方式与其他目标文件(如 main.o、range.o)相同。
[更新] 有示例 Makefile。 https://svn.ece.gatech.edu/repos/Manifold/tags/0.4/code/models/processor/zesto/Makefile
谷歌搜索 makedepend 目标后,我更新了以下内容:
OBJS = main.$(OEXT) syscall.$(OEXT) memory.$(OEXT) regs.$(OEXT) \
loader.$(OEXT) endian.$(OEXT) dlite.$(OEXT) symbol.$(OEXT) \
eval.$(OEXT) options.$(OEXT) stats.$(OEXT) eio.$(OEXT) \
range.$(OEXT) misc.$(OEXT) machine.$(OEXT) bbtracker.$(OEXT)
bbtracker.$(OEXT): /usr/include/stdlib.h /usr/include/stdio.h /usr/include/malloc.h
bbtracker.$(OEXT): bbtracker.h
main.$(OEXT): host.h misc.h machine.h machine.def endian.h version.h dlite.h
main.$(OEXT): regs.h memory.h options.h stats.h eval.h loader.h sim.h
sim-fast.$(OEXT): bbtracker.h
现在编译成功了。
问题解决了吗?最近我用 simplesim 遇到了同样的问题。