linux 下的 makefile问题

houdaping 2007-09-29 10:34:37
CC = ckcore-elf-gcc
AS = ckcore-elf-as
LD = ckcore-elf-ld

CFLAGS = -mbig-endian -c -O2 -g
ASFLAGS = -mbig-endian

OBJECT = tinyloader.o tiny_spi.o tiny_main.o vectors.o \
main.o pll_config.o tinyloader2.o \
compress.o unzip_main.o 6102.o
TEMP_FILE1 := main.TM1
TEMP_FILE2 := main.TM2

all :flash ready

flash : bootloader.elf
ckcore-elf-objcopy bootloader.elf bootloader.bin -O binary -S -g -R .note -R .comment \
--change-section-lma .loadertext=0x60000000 \ --change-section-lma .loadertext2=0x60000800 \
--change-section-lma .text=0x60010000
xxd -c4 -p bootloader.bin > TEMP_FILE1
sed -e '2c300155AA' TEMP_FILE1 > TEMP_FILE2
xxd -r -c4 -p TEMP_FILE2 > bootloader.bin
rm -f TEMP_FILE1
rm -f TEMP_FILE2

ready : main.elf
ckcore-elf-objcopy main.elf 6102.bin -O binary -S -g -R .loadertext -R .loaderbss
gzip -n9 6102.bin
bin2h 6102.bin.gz 6102.c

bootloader.elf : $(OBJECT)
$(LD) -T link.ld -EB $(OBJECT) -o $@

bootloader.txt : bootloader.elf
ckcore-elf-objdump -D $^ > $@

%.o : %.c
$(CC) $(CFLAGS) $^ -o $@

%.o : %.S
$(CC) $(CFLAGS) $^ -o $@

clean:
rm -f *.o *.srec *.hex bootloader.elf *.gz


红色的部分不是很清楚 请讲解下 !!
...全文
110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hifrog 2007-09-29
  • 打赏
  • 举报
回复
xxd的手册还是得看英文的。
mymtom 2007-09-29
  • 打赏
  • 举报
回复
看看xxd的手册吧!
http://cmpp.linuxforum.net/cman-html/man1/xxd.1.html
hifrog 2007-09-29
  • 打赏
  • 举报
回复
xxd -c4 -p bootloader.bin > TEMP_FILE1
将bootloader.bin二进制文件转换为16进制文本
sed -e '2c300155AA ' TEMP_FILE1 > TEMP_FILE2
对16进制文本进行修改
xxd -r -c4 -p TEMP_FILE2 > bootloader.bin
把修改后的16进制文本再转回二进制文件,保存为bootloader.bin
hifrog 2007-09-29
  • 打赏
  • 举报
回复
是make flash的脚本。
\是换行
xxd是用来在16进制和2进制之间进行转换的工具,可以查看man:
http://www.linuxcommand.org/man_pages/xxd1.html
houdaping 2007-09-29
  • 打赏
  • 举报
回复
看了 一些关于makefile资料上的规则 还是不太明白!!!!!

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧