whutxuan
驱动小牛
驱动小牛
  • 注册日期2002-03-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1353回复:7

有个裁减内核的Makefile,能帮我注释一下吗?

楼主#
更多 发布于:2002-11-15 14:15
#
# 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
pengyc
驱动牛犊
驱动牛犊
  • 注册日期2001-07-16
  • 最后登录2010-04-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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
制作启动盘

whutxuan
驱动小牛
驱动小牛
  • 注册日期2002-03-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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
 
表示什么意思

这几个命令表示什么意思?

ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-15 16:48
建议去看王学龙那本《嵌入式LINUX系统设计与应用》一书,该书对READHAT的MAKEFILE有详尽注释。
生命驱动,活力无限!
whutxuan
驱动小牛
驱动小牛
  • 注册日期2002-03-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-15 16:44
执行make menuconfig就看到图形了,要做这些选择,要对内核非常熟悉呀,可是我都不熟悉怎么选择呢?
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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就看到图形了。

whutxuan
驱动小牛
驱动小牛
  • 注册日期2002-03-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
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]
unix1998
驱动老牛
驱动老牛
  • 注册日期2002-05-08
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-15 15:18
太长了。 :(
哪个不懂。一段一段的吧。我怕。
all: Image
这句的意思是你执行
make all 的时候,系统会生成Image.
clean:
make clean的时候,系统会执行下面的内容。
...
游客

返回顶部