Makefile多文件连接顺序问题
来源:互联网 发布:写漫画的软件 编辑:程序博客网 时间:2024/06/04 18:41
Makefile 多个文件编写时一定要注意链接的顺序,下列代码我调试了很久才发现原来是Makefile的连接顺序不对
而导致的错误。
原来错误的Makefile:
leds_stream_c.bin: leds_stream_c.o boot.o
arm-linux-ld -Ttext 0x0000 leds_stream_c.o boot.o -o leds_stream_c_elf
arm-linux-objcopy -O binary -S leds_stream_c_elf leds_stream_c.bin
rm *elf
leds_stream_c.o:leds_stream_c.c
arm-linux-gcc -g -c leds_stream_c.c -o leds_stream_c.o
boot.o:boot.S
arm-linux-gcc -g -c boot.S -o boot.o
clean:
rm *.o *.bin *elf
该程序由两个文件组成:boot.S 和 leds_stream_c.c,
boot.S 主要是汇编的部分:
.text
.global _start
_start:
@关看门狗
ldr r0, =0x53000000
mov r1, #0
str r1, [r0]
@设置栈
mov sp, #(4*1024) @4K内存顶部
bl main
main_loop:
b main_loop
leds_stream_c.c则是C代码,这里就不贴出来了。
连接时应该先连接boot.o ,再连接leds_stream_c.o,一定不能写反!!
正确的Makefile为:
leds_stream_c.bin:boot.o leds_stream_c.o
arm-linux-ld -Ttext 0x0000 boot.o leds_stream_c.o -o leds_stream_c_elf
arm-linux-objcopy -O binary -S leds_stream_c_elf leds_stream_c.bin
rm *elf
leds_stream_c.o:leds_stream_c.c
arm-linux-gcc -g -c leds_stream_c.c -o leds_stream_c.o
boot.o:boot.S
arm-linux-gcc -g -c boot.S -o boot.o
clean:
rm *.o *.bin *elf
而导致的错误。
原来错误的Makefile:
leds_stream_c.bin: leds_stream_c.o boot.o
arm-linux-ld -Ttext 0x0000 leds_stream_c.o boot.o -o leds_stream_c_elf
arm-linux-objcopy -O binary -S leds_stream_c_elf leds_stream_c.bin
rm *elf
leds_stream_c.o:leds_stream_c.c
arm-linux-gcc -g -c leds_stream_c.c -o leds_stream_c.o
boot.o:boot.S
arm-linux-gcc -g -c boot.S -o boot.o
clean:
rm *.o *.bin *elf
该程序由两个文件组成:boot.S 和 leds_stream_c.c,
boot.S 主要是汇编的部分:
.text
.global _start
_start:
@关看门狗
ldr r0, =0x53000000
mov r1, #0
str r1, [r0]
@设置栈
mov sp, #(4*1024) @4K内存顶部
bl main
main_loop:
b main_loop
leds_stream_c.c则是C代码,这里就不贴出来了。
连接时应该先连接boot.o ,再连接leds_stream_c.o,一定不能写反!!
正确的Makefile为:
leds_stream_c.bin:boot.o leds_stream_c.o
arm-linux-ld -Ttext 0x0000 boot.o leds_stream_c.o -o leds_stream_c_elf
arm-linux-objcopy -O binary -S leds_stream_c_elf leds_stream_c.bin
rm *elf
leds_stream_c.o:leds_stream_c.c
arm-linux-gcc -g -c leds_stream_c.c -o leds_stream_c.o
boot.o:boot.S
arm-linux-gcc -g -c boot.S -o boot.o
clean:
rm *.o *.bin *elf
0 0
- Makefile多文件连接顺序问题
- Makefile变量连接问题
- makefile中库的顺序问题
- 多个头文件之间的顺序问题
- 写Makefile文件问题记录
- makefile文件中的一些问题
- Makefile 连接库文件的方法
- 编译F#多文件工程的文件顺序问题
- 编译顺序连接问题和 lnk4248 问题
- 多文件Makefile组织
- 多文件Makefile实现
- 多文件makefile
- 多文件编译 makefile
- makefile多文件编译
- YUI js文件顺序问题
- 头文件包含顺序问题
- js文件引入顺序问题
- leading() hint的用法,连接顺序问题
- HDU 4937 Lucky Number
- hdu 1007 Quoit Design 最近点对
- hdu-2068-Choose the best route
- LeetCode Median of Two Sorted Arrays
- 【Android开发-7】生命周期,Activity的生老病死
- Makefile多文件连接顺序问题
- poj 3468线段树延迟更新
- java中判断字符串是否为只包含数字
- 2014年8月12日晚 学习java的第一天
- Windows 下安装node-canvas
- POJ 2503 Babelfish(Trie)
- sublime text 3通过命令行安装package control插件
- uva 110(回溯)
- dojo加载树报错