无法安装y86模拟器(csapp)

时间:2015-04-24 14:26:35

标签: linux gcc y86

我正在尝试在archlinux上编译Y86代码的模拟器,这是我的配置。 (我对这种格式感到非常抱歉。)

GUIMODE=-DHAS_GUI

TKLIBS=-L/usr/lib -ltk -ltcl

TKINC=-isystem /usr/include 

但是当我运行makefile时,事情似乎是错误的:

(cd misc; make all)
make[1]: Entering directory '/home/meijieru/sim/misc'
gcc -Wall -O2 -c yis.c
gcc -Wall -O2 -c isa.c
isa.c: 在函数‘load_mem’中:
isa.c:204:10: 警告:变量‘hexcode’被设定但未被使用 [-Wunused-but-set-variable]
     char hexcode[15];
          ^
isa.c:203:9: 警告:变量‘addr’被设定但未被使用 [-Wunused-but-set-variable]
     int addr = 0;
         ^
isa.c:202:9: 警告:变量‘empty_line’被设定但未被使用 [-Wunused-but-set-variable]
     int empty_line = 1;
         ^
gcc -Wall -O2 yis.o isa.o -o yis
gcc -Wall -O2 -c yas.c
gcc -O2 -c yas-grammar.c
gcc -Wall -O2 yas-grammar.o yas.o isa.o -lfl -o yas
bison -d hcl.y
flex hcl.lex
gcc -O2 node.c lex.yy.c hcl.tab.c outgen.c -o hcl2c
make[1]: Leaving directory '/home/meijieru/sim/misc'
(cd pipe; make all GUIMODE=-DHAS_GUI TKLIBS="-L/usr/lib -ltk -ltcl" TKINC="-isystem /usr/include ")
make[1]: Entering directory '/home/meijieru/sim/pipe'
# Building the pipe-std.hcl version of PIPE
../misc/hcl2c -n pipe-std.hcl < pipe-std.hcl > pipe-std.c
gcc -Wall -O2 -isystem /usr/include  -I../misc -DHAS_GUI -o psim psim.c pipe-std.c \
    ../misc/isa.c -L/usr/lib -ltk -ltcl -lm
psim.c: 在函数‘simResetCmd’中:
psim.c:852:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = "No arguments allowed";
        ^
psim.c:860:11: 错误:‘Tcl_Interp’没有名为‘result’的成员
     interp->result = stat_name(STAT_AOK);
           ^
psim.c: 在函数‘simLoadCodeCmd’中:
psim.c:871:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = "One argument required";
        ^
psim.c:877:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = tcl_msg;
        ^
psim.c:884:11: 错误:‘Tcl_Interp’没有名为‘result’的成员
     interp->result = tcl_msg;
           ^
psim.c: 在函数‘simLoadDataCmd’中:
psim.c:894:11: 错误:‘Tcl_Interp’没有名为‘result’的成员
     interp->result = "Not implemented";
           ^
psim.c:900:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = "One argument required";
        ^
psim.c:906:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = tcl_msg;
        ^
psim.c:910:11: 错误:‘Tcl_Interp’没有名为‘result’的成员
     interp->result = tcl_msg;
           ^
psim.c: 在函数‘simRunCmd’中:
psim.c:924:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = "At most one argument allowed";
        ^
psim.c:931:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = tcl_msg;
        ^
psim.c:935:11: 错误:‘Tcl_Interp’没有名为‘result’的成员
     interp->result = stat_name(status);
           ^
psim.c: 在函数‘simModeCmd’中:
psim.c:944:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = "One argument required";
        ^
psim.c:947:11: 错误:‘Tcl_Interp’没有名为‘result’的成员
     interp->result = argv[1];
           ^
psim.c:956:8: 错误:‘Tcl_Interp’没有名为‘result’的成员
  interp->result = tcl_msg;
        ^
psim.c: 在函数‘signal_register_update’中:
psim.c:993:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c: 在函数‘create_memory_display’中:
psim.c:1004:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c:1019:60: 错误:‘Tcl_Interp’没有名为‘result’的成员
      fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                            ^
psim.c: 在函数‘set_memory’中:
psim.c:1054:60: 错误:‘Tcl_Interp’没有名为‘result’的成员
      fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                            ^
psim.c: 在函数‘show_cc’中:
psim.c:1068:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c: 在函数‘show_stat’中:
psim.c:1080:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c: 在函数‘show_cpi’中:
psim.c:1095:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c: 在函数‘signal_sources’中:
psim.c:1109:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c: 在函数‘signal_register_clear’中:
psim.c:1119:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c: 在函数‘report_line’中:
psim.c:1133:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c: 在函数‘report_pc’中:
psim.c:1189:56: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "Error Message was '%s'\n", sim_interp->result);
                                                        ^
psim.c: 在函数‘report_state’中:
psim.c:1203:58: 错误:‘Tcl_Interp’没有名为‘result’的成员
  fprintf(stderr, "\tError Message was '%s'\n", sim_interp->result);
                                                          ^
Makefile:42: recipe for target 'psim' failed
make[1]: *** [psim] Error 1
make[1]: Leaving directory '/home/meijieru/sim/pipe'
Makefile:26: recipe for target 'all' failed
make: *** [all] Error 2

对这个问题的任何见解?

2 个答案:

答案 0 :(得分:0)

Tcl_Interp类型没有名为result的成员。

使用tcl支持构建时,-DUSE_INTERP_RESULT添加到CPPFLAGS

答案 1 :(得分:0)

如果有人遇到此问题,请在sim / Makefile中将这些行注释掉:

GUIMODE=-DHAS_GUI
TKLIBS=-L/usr/lib -ltk -ltcl
TKINC=-isystem /usr/include/tcl8.5

在sim / pipe / Makefile以及sim / seq / Makefile中,重复上述操作。

希望这对您有所帮助,并在本实验中很有趣:)