系统移植-交叉编译工具链

不同架构的机器码 与 汇编语言 都不可移植, 且二者一一对应

c语言中三种成分:

1.分号结尾的叫做语句   语句可以让CPU执行,可以进行预处理,编译等生成机器码

2.#开头的为预处理指令 不带分号  CPU无法执行

3.注释,CPU不执行

1.C语言执行的四个步骤


a.预处理:进行宏定义的替换,例如#define等,删除注释,头文件的展开,例如#include,预处理后的文件为.i文件;
b.编译:处理过的C语言生成汇编语言,生成.s文件
c.汇编:将汇编文件生成二进制机器码,生成.o文件
d.链接:调用库,库为编译好的二进制文件,库文件是区分架构的

2.区分elf文件和bin文件

exe为Windows系统下可执行文件

elf为Linux系统下可执行文件,为二进制文件

elf运行在Linux系统之上的可执行文件,需要操作系统

bin文件是运行在CPU执行,只包含汇编生成的机器码以及全局变量对应的机器码

,不包含其他任何系统信息。

系统移植-交叉编译工具链_第1张图片

data和bss段可分配全局变量的空间,局部变量只有程序运行起来的时候在栈上分配空间。 

 

3..简述交叉编译工具链中strip及objdump工具的主要用途是什么?

strip删除符号表中的符号,减小elf文件的大小,但不影响程序的运行
  objdump显示文件的信息

objcopy可以将elf文件生成bin文件

你可能感兴趣的:(开发语言)