第16章:嵌入式Linux开发环境.ppt
文本预览下载声明
嵌入式Linux开发环境 GNU工具链 嵌入式Linux开发环境的建立 嵌入式Linux镜像的生成 嵌入式Linux的调试 前 言 嵌入式Linux的开发环境概述 前 言 嵌入式Linux的开发环境概述 是一种交叉开发环境 本地开发:开发的系统就是运行的系统 前 言 嵌入式Linux的开发环境概述 是一种交叉开发环境 本地开发:开发的系统就是运行的系统 交叉开发:开发的系统与运行的系统不同 前 言 嵌入式Linux的开发环境概述 是一种交叉开发环境 本地开发:开发的系统就是运行的系统 交叉开发:开发的系统与运行的系统不同 对嵌入式Linux代码进行编译、链接,并生成可下载到目标板运行的镜像 对二进制文件进行查看分析 调试程序 对软件开发、代码版本进行管理 (一)GNU工具链 GNU工具链包括了构建Linux开发环境所需的编译、链接、调试、软件工程等工具,和其他一些优秀的开源软件共同构建Linux的开发环境 GCC——GNU 编译器集 Binutils——辅助GCC 的主要软件 Gdb——调试器 make——软件工程工具 diff, patch——补丁工具 CVS——版本控制系统 … (一)GNU工具链 GCC(GNU Compiler Collection) 不仅仅是C 语言编译器 目前,GCC 可以支持多种高级语言,如 C、C++ ADA Objective-C、Objective-C++ JAVA Fortran PASCAL (一)GNU工具链 GCC(GNU Compiler Collection) GCC下的工具: cpp —预处理器,GNU C 编译器在编译前自动使用cpp 对代码进行预处理 gcc —符合ISO 等标准的C 编译器 g++ —基本符合ISO 标准的C++ 编译器 gcj —GCC 的java 前端 gnat —GCC 的GNU ADA 95 前端 (一)GNU工具链 GCC(GNU Compiler Collection) gcc是一个强大的工具集合,它包含了预处理器、编译器、汇编器、链接器等组件。它会在需要的时候调用其他组件 输入文件的类型和传递给gcc 的参数决定了gcc 调用具体的哪些组件 对于开发者,它提供的足够多的参数,可以让开发者全面控制代码的生成,这对嵌入式系统级的软件开发非常重要 (一)GNU工具链 GCC的编译过程 与一般的C程序编译过程一样: 预处理 编译成汇编代码 汇编成目标代码 链接 (一)GNU工具链 GCC使用实例 // gcctest.c #include stdio.h int main(void) { int i,j; i=0; j=0; i=j+1; printf(“Hello World!\n”); printf(“i=j+1=%d\n”,i); } (一)GNU工具链 GCC使用实例 编译链接及运行 (一)GNU工具链 GCC的主要参数简介(按照编译过程) 预处理:-E参数 使用实例 gcc -E -o gcctest.cpp gcctest.c 或:gcc -E gcctest.c gcctest.cpp 使用wc 命令比较预处理后的文件与源文件,可以看到两个文件的差异 (一)GNU工具链 GCC的主要参数简介(按照编译过程) 汇编:-S参数 生成汇编代码后停止工作 使用实例 gcc -S gcctest.c (一)GNU工具链 GCC的主要参数简介(按照编译过程) 编译成目标代码: -c,直接编译成目标文件 使用汇编器生成目标文件 使用实例 gcc -c gcctest.c as -o gcctest.o gcctest.s (一)GNU工具链 GCC的主要参数简介(按照编译过程) 编译成可执行程序:-o参数 由目标代码生成执行代码 gcc -o gcctest gcctest.o 由源文件直接生成可执行代码 gcc -o gcctest gcctest.c (一)GNU工具链 GCC的主要参数简介(按照编译过程) 编译成可执行程序:-o参数 使用实例 由目标代码生成执行代码 (一)GNU工具链 GCC的主要参数简介(按照编译过程) 编译成可执行程序:-o参数 使用实例 由源文件直接生成可执行代码 (一)GNU工具链 GCC的高级选项 -Wall:打开所有的警告信息 使用实例 (一)GNU工具链 GCC的高级选项 -Wall:打开所有的警告信息 使用实例 根据警告信息检查源程序 (一)GNU工具链 GC
显示全部