阅读:1353回复:7
有个裁减内核的Makefile,能帮我注释一下吗?
#
# Makefile for linux. # If you don\'t have \'-mstring-insns\' in your gcc (and nobody but me has :-) # remove them from the CFLAGS defines. # AS86 =as -0 -a CC86 =cc -0 LD86 =ld -0 AS =gas LD =gld LDFLAGS =-s -x -M CC =gcc CFLAGS =-Wall -O -fstrength-reduce -fomit-frame-pointer -fcombine-regs CPP =gcc -E -nostdinc -Iinclude ARCHIVES=kernel/kernel.o mm/mm.o fs/fs.o LIBS =lib/lib.a .c.s: $(CC) $(CFLAGS) \\ -nostdinc -Iinclude -S -o $*.s $< .s.o: $(AS) -c -o $*.o $< .c.o: $(CC) $(CFLAGS) \\ -nostdinc -Iinclude -c -o $*.o $< all: Image Image: boot/boot tools/system tools/build tools/build boot/boot tools/system > Image sync tools/build: tools/build.c $(CC) $(CFLAGS) \\ -o tools/build tools/build.c chmem +65000 tools/build boot/head.o: boot/head.s tools/system: boot/head.o init/main.o \\ $(ARCHIVES) $(LIBS) $(LD) $(LDFLAGS) boot/head.o init/main.o \\ $(ARCHIVES) \\ $(LIBS) \\ -o tools/system > System.map kernel/kernel.o: (cd kernel; make) mm/mm.o: (cd mm; make) fs/fs.o: (cd fs; make) lib/lib.a: (cd lib; make) boot/boot: boot/boot.s tools/system (echo -n \"SYSSIZE = (\";ls -l tools/system | grep system \\ | cut -c25-31 | tr \'\\012\' \' \'; echo \"+ 15 ) / 16\") > tmp.s cat boot/boot.s >> tmp.s $(AS86) -o boot/boot.o tmp.s rm -f tmp.s $(LD86) -s -o boot/boot boot/boot.o clean: rm -f Image System.map tmp_make boot/boot core rm -f init/*.o boot/*.o tools/system tools/build (cd mm;make clean) (cd fs;make clean) (cd kernel;make clean) (cd lib;make clean) backup: clean (cd .. ; tar cf - linux | compress16 - > backup.Z) sync dep: sed \'/\\#\\#\\# Dependencies/q\' < Makefile > tmp_make (for i in init/*.c;do echo -n \"init/\";$(CPP) -M $$i;done) >> tmp_make cp tmp_make Makefile (cd fs; make dep) (cd kernel; make dep) (cd mm; make dep) ### Dependencies: init/main.o : init/main.c include/unistd.h include/sys/stat.h \\ include/sys/types.h include/sys/times.h include/sys/utsname.h \\ include/utime.h include/time.h include/linux/tty.h include/termios.h \\ include/linux/sched.h include/linux/head.h include/linux/fs.h \\ include/linux/mm.h include/asm/system.h include/asm/io.h include/stddef.h \\ include/stdarg.h include/fcntl.h |
|
沙发#
发布于:2002-11-15 19:44
这个Makefile的流程是这样的:先生成目标文件boot/head.o init/main.o kernel/kernel.o mm/mm.o fs/fs.o lib/lib.a , 再生成工具程序:toos/build tools/system 和 boot/boot。 最后生成内核映像Image 。
细节的地方我还不清楚。 你这个Makefile可用于什么版本的内核? dd bs=1k if=/usr/src/linux/arch/i386/ boot/bzImage of=/dev/fd0 制作启动盘 |
|
板凳#
发布于:2002-11-15 17:15
#dd bs=1k if=/usr/src/linux/arch/i386/ boot/bzImage of=/dev/fd0
#mkdir /mnt/loop 2>/dev/null #dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=4600 >/dev/null bs=1k if=/usr/src/linux/arch/i386/ 2>/dev/null boot/bzImage of=/dev/fd0 表示什么意思 这几个命令表示什么意思? |
|
地板#
发布于:2002-11-15 16:48
建议去看王学龙那本《嵌入式LINUX系统设计与应用》一书,该书对READHAT的MAKEFILE有详尽注释。
|
|
|
地下室#
发布于:2002-11-15 16:44
执行make menuconfig就看到图形了,要做这些选择,要对内核非常熟悉呀,可是我都不熟悉怎么选择呢?
|
|
5楼#
发布于:2002-11-15 16:38
.s是汇编语言文件,启动用的,很重要。
echo是相当于print的。 cat boot/boot.s >> tmp.s 是把boot/boot.s 的内容输出到tmp.s cd mm; make 是2条命令,先进mm目录,然后make. 这里没有流程的概念。 执行make menuconfig就看到图形了。 |
|
6楼#
发布于:2002-11-15 15:26
boot/boot: boot/boot.s tools/system
(echo -n \"SYSSIZE = (\";ls -l tools/system | grep system \\ | cut -c25-31 | tr \'\\012\' \' \'; echo \"+ 15 ) / 16\") > tmp.s cat boot/boot.s >> tmp.s $(AS86) -o boot/boot.o tmp.s 这段不懂.s是什么东东。 mm/mm.o: (cd mm; make) 这种命令行好象我没有见过。 还有这个Makefile的流程我不是很明了。 对了,刚才我在linux下执行了make config 出现一大堆象以前dos配置config.sys的信息,我怎么知道lilo 对应着什么选项,执行常用命令ls sed对应什么选项,还有cramft等等。 What shall I do??? [编辑 - 11/15/02 by whutxuan] |
|
7楼#
发布于:2002-11-15 15:18
太长了。 :(
哪个不懂。一段一段的吧。我怕。 all: Image 这句的意思是你执行 make all 的时候,系统会生成Image. clean: make clean的时候,系统会执行下面的内容。 ... |
|