嵌入式Linux开发学习笔记:编译与调试
编译
概念
编译的概念很容易混淆,在《编译原理》教材中,编译指的是词法分析到产生目标代码的过程,而在现代编译器中,这个过程被拓展了。现代编译器的主要工作流程包括:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables),
过程
预处理
预处理程序名为cpp,它的主要工作:
处理include
展开宏定义
处理条件编译命令
输出.i文件
编译
编译器程序名为ccl,它的主要工作为:
生成汇编代码
输出.S文件
汇编
汇编器程序名为as,它的主要工作为:
生成二进制代码
输出.o文件
连接
连接器程序名为ld,它的主要工作为:
生成可执行文件
ELF与BIN
ELF ELF = Executable and Linkable Format,可执行连接格式,是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的。… Read the rest