编译器tiny在linux下的makefile
《编译原理与实践》的小编译器tiny的源码好像是为windows量身定做的,我作了以下改动以在linux下运行
解压loucomp.zip后文件名都是大写的,编写以下脚本将大写文件名改为小写
for i in *
do
mv $i `ls $i | tr [A-Z] [a-z]`
done
然后改动makefile文件如下:
#
# makefile for TINY
# Borland C Version
# K. Louden 2/3/98
#
CC = gcc
CFLAGS =
OBJS = main.o util.o scan.o parse.o symtab.o analyze.o code.o cgen.o
all: tiny tm
tiny: $(OBJS)
$(CC) $(CFLAGS) -o $@ $(OBJS)
main.o: main.c globals.h util.h scan.h parse.h analyze.h cgen.h
$(CC) $(CFLAGS) -c main.c
util.o: util.c util.h globals.h
$(CC) $(CFLAGS) -c util.c
scan.o: scan.c scan.h util.h globals.h
$(CC) $(CFLAGS) -c scan.c
parse.o: parse.c parse.h scan.h globals.h util.h
$(CC) $(CFLAGS) -c parse.c
symtab.o: symtab.c symtab.h
$(CC) $(CFLAGS) -c symtab.c
analyze.o: analyze.c globals.h symtab.h analyze.h
$(CC) $(CFLAGS) -c analyze.c
code.o: code.c code.h globals.h
$(CC) $(CFLAGS) -c code.c
cgen.o: cgen.c globals.h symtab.h code.h cgen.h
$(CC) $(CFLAGS) -c cgen.c
clean:
rm -f tiny tm *.o
tm: tm.c
$(CC) $(CFLAGS) -o $@ tm.c
最后要把sample.tny文件重新粘贴(ctr+v)到一个新文件,否则parse()会报错。我想可能是回车换行的问题把,还没深入研究:)
[ 本帖最后由 mishuang 于 2006-5-20 22:56 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
呵呵,果然对了!
回车换行的问题可以用
dos2unix sample.tny试试