嵌入式技术
C语言原文件如何一步一步变成bin文件的?
这其中自然是利用编译工具链生成的,当然不同的编译工具链这个过程还是有做差别的。
这里因为我们写的是ARM汇编程序,编译它我们自然需要采用ARM公司的ARM GNU 编译工具链,在此,我们以他为例,看看到底中间具体流程步骤是怎么样的?
我们看一下下面这张图,比较完整的告诉我们这个编译流程。
以上就是整个大概的编译流程步骤。
下面我们来看看上面用到的这些工具命令的具体如何使用。
Gcc
常用参数:
样例:
arm-none-eabi-gcc start.s -g -c -O0 -o start.o
Ld 链接目标文件生成二进制文件
参数:
样例:
arm-none-eabi-ld start.o -Ttext 0x40000000 -o start.elf
注意:这里只是指示了代码段运行地址为0x40000000 (没有指明的话就是0x0),没有指明data,bbs段的位置,默认依次放到后面。
如果链接复杂的时候,可以写一个专门链接脚本来具体化负责的链接规则。
-Txxxx.lds 这里xxxx.lds就是为链接脚本的文件名称
关于LDS链接脚本文件的编写语法又是一门新语言,另单独成文介绍。
objcopy 格式转换
-O fdname 指定输出格式
-S 去掉源文件的符号信息和relocation信息
arm-none-eabi-objcopy -O binary -S start.elf start.bin
objdump 反汇编,查看格式
-d 反汇编
-x 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出
arm-none-eabi-objdump -x -d start.elf > start.dis
全部0条评论
快来发表一下你的评论吧 !