早教吧 育儿知识 作业答案 考试题库 百科 知识分享

请问arm-linux-gcc和arm-linux-ld还有arm-linux-objcopy之间是什么关系今天我安装了arm-linux-gc,执行make命令后还是不能生成bin文件,整个程序是我对和书打的,应该不会有错,我怀疑是不是我没安装arm-linuxld

题目详情
请问arm-linux-gcc和arm-linux-ld还有arm-linux-objcopy之间是什么关系
今天我安装了arm-linux-gc,执行make命令后还是不能生成bin文件,整个程序是我对和书打的,应该不会有错,我怀疑是不是我没安装arm-linuxld和arm-linux-objcopy的原因,请问大侠这三者是什么关系,需要分别安装吗?
.text
.global _start
_start:
LDR R0,=0X56000010
MOV R1,# 0X00000400
STR R1,[R0]
LDR R0,=0X56000014
MOV R1,#0X00000000
STR R1,[R0]
MAIN_LOOP:
B MAIN_LOOP
Makefile文件:
led_on.bin:led_on.S
\x05arm-linux-gcc -g -c -o led_on.o led_on.S
\x05arm-linux-gcc -Ttext 0x0000000 -g led_on.o -o led_on_elf
\x05arm-linux-objcopy -O binary -S led_on_elf led_on.bin
clean:
\x05rm -f led_on.bin led_on_elf *.o
▼优质解答
答案和解析
gcc是编译器,负责对c代码的编译,ld是连接器 负责将多个*.o的目标文件链接成elf可执行文件.elf可执行文件是unix常用的可执行文件类型,就像windows的exe文件.elf文件中有很多信息包括段信息还有头信息,这些信息对硬件是没有意义的,所以有的时候我们通过objcopy将elf转化成bin 文件加载到内存中运行,bin文件就是一个纯二进制文件,并且你可以通过objdump将elf文件来反汇编.