(cont.)
❖ # objdump –d exam6-1-1 ❖ # arm-linux-objdump –d exam6-1-2 ❖ 可以看出这两个可执行程序的汇编码并不
完全相同
Host与Target
串口
开发板 (Target)
客户机1
客户机2
客户机3
客户机4
•Target是目标平台,比如 ARM、MIPS、SuperH、
Binutils工具包介绍
strings :打印某个文件的可打印字符串, 这些字符串最少4个字符长,也可以使用 选项-n设置字符串的最小长度。默认情况 下,它只打印目标文件初始化和可加载段 中的可打印字符;对于其它类型的文件它 打印整个文件的可打印字符,这个程序对 于了解非文本文件的内容很有帮助。
目标系统
汇编源文件 file.s
Liber
操作系统库 标准C库
file.lib
OS lib
ANSI lib
转换工具 二进制文件
烧结工具
编译器和汇编器的作用
编译器将C文件转换成为汇编文件 汇编器将汇编文件转换成为二进制指令流
*.o文件(目标文件) 每个目标文件是独立编址的,也就是说每个
目标文件的第一条指令都从相同的地址开始 存放
gcc -E -o game_precompile.txt game.c
❖ 预编译过程通过完成三个主要任务给了代码 很大的灵活性。
➢ 把"include"的文件拷贝到要编译的源文件 中。
➢ 用实际值替代"define"的文本,在调用宏的地 方进行宏替换。
➢ 条件编译
编译
作为一个中间步骤,gcc把你的代码翻译成 汇编语言。它一定要这样做,它必须通过分 析你的代码搞清楚你究竟想要做什么。如果 你犯了语法错误,它就会告诉你,这样编译 就失败了。人们有时会把这一步误解为整个 过程。但是,实际上还有许多工作要gcc去 做呢。