1 / 30
文档名称:

Chap5 嵌入式Linux应用程序开发.ppt

格式:ppt   页数:30页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Chap5 嵌入式Linux应用程序开发.ppt

上传人:wc69885 2015/10/4 文件大小:0 KB

下载得到文件列表

Chap5 嵌入式Linux应用程序开发.ppt

相关文档

文档介绍

文档介绍:嵌入式Linux 应用程序开发
开发环境的建立
进行项目开发前,首先要做的是搭建一套基于Linux操作系统的应用开发环境,一般由目标板和宿主机所构成。
目标板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主机来完成。
开发环境对硬件没有特殊的要求,但是为了双方之间建立连接关系,关键的接口包括串口、以太网口和USB口等是必不可少的。
交叉编译环境的建立
交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。
在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式。
交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。
、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux内核头文件。
建立一个交叉编译工具链是一个相当复杂的过程,为了节省时间,网上有一些编译好的可用的交叉编译工具链可以下载。编译好的交叉编译工具链arm-linux- ,只需简单地解压缩即可使用:
tar xvzf arm-linux- –C /arm9
假设工具链解压缩到目录/arm9。解压完毕后把工具链目录加入到环境变量PATH中即可。
简单验证交叉编译工具
:
#include <>
int main(void)
{
 printf("hello world\n");
 return 0;
}
然后在命令行执行:
$arm-linux-gcc  -o helloworld
$file helloworld
如果输出以下信息,说明成功建立了编译工具。
helloworld: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), not stripped
Linux及开发工具的使用
GNU工具的开发流程如下:
编写C、C++语言或汇编源程序,或g++生成目标文件,编写链接脚本文件,用链接器生成最终目标文件(elf格式),用二进制转换工具生成可下载的二进制代码。

Linux下的GNU调试工具主要是gdb、gdbserver和kgdb。其中gdb和gdbserver可完成对目标板上Linux应用程序的远程调试。gdbserver是一个很小的应用程序,运行于目标板上,可监控被调试进程的运行,并通过串口与上位机上的gdb通信。开发者可以通过上位机的gdb输入命令,控制目标板上进程的运行,查看内存和寄存器的内容。
gcc编译器的使用
gcc最基本的用法是:gcc [options] file...
gcc的整个编译过程分别是:预处理,编译,汇编和链接。
常用的选项:
-o要求编译器生成指定文件名的可执行文件;
-c表示只要求编译器进行编译,而不要进行链接,;
-g在编译的时候提供以后对程序进行调试的信息;
-E只进行预处理就停止,而不做编译、汇编和链接;
-S只进行编译,而不做汇编和链接;
-O对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高;
-Wall指定产生全部的警告信息。
编译实例
$ gcc -o hello
gcc编译器就会生成一个hello的可执行文件。./hello就可以看到程序的输出结果,在屏幕上打印出“Hello the world”的字符串来。
GNU编译器生成的目标文件默认格式为elf(executive linked file)格式,这是Linux系统所采用的可执行链接文件的通用文件格式。elf格式由若干个段(section)组成,由标准c源代码生成的目标文件中包含以下段:
.text(正文段)包含程序的指令代码,
.data(数据段)包含固定的数据,如常量,字符串等,
.bss(未初始化数据段)包含未初始化的变量和数组等。
Makefile文件和Make命令
Makefile文件描述了目标文件之间的依赖关系,以及指定编译过程中使用的工具。
一个工程中的源文件不计其数,按其类型、功能、模块分别放在若干个目录中。Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。
Makefile的好处就是“自动化编译”,一旦写好,只需要一个Make命令,整个工程完