不同架构的机器码 与 汇编语言 都不可移植, 且二者一一对应
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执行,只包含汇编生成的机器码以及全局变量对应的机器码
,不包含其他任何系统信息。
data和bss段可分配全局变量的空间,局部变量只有程序运行起来的时候在栈上分配空间。
3..简述交叉编译工具链中strip及objdump工具的主要用途是什么?
strip删除符号表中的符号,减小elf文件的大小,但不影响程序的运行
objdump显示文件的信息
objcopy可以将elf文件生成bin文件