嵌入式Linux系统应用及项目实践 教学课件 ppt 作者 丰海 第4章_嵌入式Linux开发基础

上传人:E**** 文档编号:89467104 上传时间:2019-05-25 格式:PPT 页数:29 大小:1.66MB
返回 下载 相关 举报
嵌入式Linux系统应用及项目实践 教学课件 ppt 作者 丰海 第4章_嵌入式Linux开发基础_第1页
第1页 / 共29页
嵌入式Linux系统应用及项目实践 教学课件 ppt 作者 丰海 第4章_嵌入式Linux开发基础_第2页
第2页 / 共29页
嵌入式Linux系统应用及项目实践 教学课件 ppt 作者 丰海 第4章_嵌入式Linux开发基础_第3页
第3页 / 共29页
嵌入式Linux系统应用及项目实践 教学课件 ppt 作者 丰海 第4章_嵌入式Linux开发基础_第4页
第4页 / 共29页
嵌入式Linux系统应用及项目实践 教学课件 ppt 作者 丰海 第4章_嵌入式Linux开发基础_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《嵌入式Linux系统应用及项目实践 教学课件 ppt 作者 丰海 第4章_嵌入式Linux开发基础》由会员分享,可在线阅读,更多相关《嵌入式Linux系统应用及项目实践 教学课件 ppt 作者 丰海 第4章_嵌入式Linux开发基础(29页珍藏版)》请在金锄头文库上搜索。

1、1,第四章 嵌入式Linux开发基础,丰海,2,C语言基础,计算机语言定义 计算机能够识别和接受的语言。 要使计算机按自己的意图工作,必须使用计算机所能接受、理解和执行的指令指挥计算机工作。,3,计算机语言的种类 机器语言 低级语言 汇编语言 BASIC 入门语言 F77 科学计算 高级语言 Foxpro 数据库管理 (面向问题 ) C 多用途,计算机语言,4,C语言程序需经过编译: 编译 执行 要上机完成一个计算问题,主要的任务就是用高级语言编写出相应的源程序。,C语言源程序,机器指令 目的程序,结果,编译程序,5,C语言的特点 集高级语言和低级语言的优点于一身: 能实现低级语言的大部分功能

2、(如直接访问内存物理地址、进行位操作等)。 图形功能强。 运算符和数据结构丰富。 语法限制不太严格,程序设计自由度大。 生成目标代码质量高,程序执行效率高。,6,简单的C程序介绍 例1: main() 主函数说明 程序框架 printf(“abcdef”); 函数体 语句 程序的功能是输出字符串:abcdef,7,算法 算法的概念 要利用计算机处理问题,光学习语言的语法规则还不够,最重要的是要学会针对各类型的问题,拟定出有效的解题方法和步骤。解题方法和步骤就是算法。,8,算法: 为了解决一个问题而采取的有限步骤。 计算机算法: 如何使计算机一步一步地工作的具体过程。,9,流程图,10,#inc

3、lude int main(void) int a,b,c; printf(“请输入a的值:n“); scanf(“%d“, ,11,12,三个基本结构: 顺序结构 按固定顺序(从上到下或从左到右)执行的结构。,A,B,a,b,13,选择结构 根据条件P选择执行哪一个分支。 成立 不成立,p,A,B,a,b,成立,不成立,14,循环结构 重复执行某些操作的结构。 分为两种: 当型循环和直到型循环。 当型循环 直到型循环,P1,A,A,P2,a,a,b,b,Y,Y,N,N,15,GNU GCC,GNU就是GNUs Not Unix的缩写,GNU 是由自由软件基金会 (Free Software

4、Foundation, FSF) 的董事长Richard M. Stallman (RMS)于1984年发起的,如今已经有十几年的历史了。它的目标是创建一套完全自由的操作系统。 GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是 GNU计划的关键部分,GCC 原名为 GNU C 语言编译器,因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C+。之后也变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada与其他语言。,GNU gcc编译器及其使用,gcc hello.c -o h

5、ello_pc / 用gcc编译器编译hello.c源程序, /生成可以在X86 CPU上的可执行程序hello_pc arm-linux-gcc hello.c -o hello_arm / 用arm-linux-gcc交叉编译器, /生成可以在arm s3c2440 CPU上的可执行程序hello_arm,GNU gcc的功能就是将c、c+等源代码程序经编译器编译成目标文件,再经过链接器(Linker)链接指定的目标文件及相关的函数库,最后产生可执行的二进制程序,如图所示为gcc编译器的编译流程图:,17,18,Make与Makefile文件简介,在嵌入式系统的程序开发中,通常一个较大的程

6、序都会使用到不同的小程序或函数,所以在编译时就要将这些不同的程序编译,产生不同的目标文件,然后再执行连接的动作,最后才能生成可执行的二进制程序。例如有一主程序为main.c,需要使用到A.c和B.c的程序,因此在编译时就要执行如下命令才能产生可执行的二进制程序main: gcc c main.c (生成main.o目标文件) gcc c A.c (生成A.o目标文件) gcc c B.c (生成B.o目标文件) gcc o main main.o A.o B.o,20,自动化编译工具Make 的优点如下: (1) 对庞大及复杂的c源代码文件进行有效的维护。 (2) 减少程序编译的次数。 (3)

7、 使源代码的编译、连接、管理更加有效。 (4) 具有编译自动化的功能,将编译(Complier)、连接(Link)、产生可执行二进制程序的动作自动化完成。,Makefile文件主要描述了各个文件间的依赖关系和更新命令,其具体内容如下: (1)程序中各文件的依赖关系。 (2)更新各个文件的命令。,21,有一个主程序(hello.c)可输入两个整数a及b,其中主程序会执行一个求两整数和的函数add( )后输出其和,然后再执行一个求两整数差的函数sub( )后输出其差,add( )和sub( )这两个函数分别定义在add.c和sub.c的文件中,这两个函数的声明是定义在hello.h的头文件中,其程

8、序源代码分别如下所述:,22,(1) 主程序hello.c源代码如下所示: #include #include #include “hello.h“ int main() int a,b,c,d; printf(“请输入两个整数: “); scanf(“%d %d“, ,23,(2) 头文件hello.h中包含求两整数和及差的原型声明,其程序源代码如下所示: int add(int,int); int sub(int,int); (3) 求两整数和的函数add( ),定义在add.c程序中,其程序源代码如下所示: int add(int a,int b) int s; s=a+b; retur

9、n (s); ,24,(4) 求两整数差的函数sub( )定义在sub.c程序中,其程序源代码如下所示: int sub(int c,int d) int dif; dif=c-d; return (dif); ,25,这个程序由三个不同的程序源代码文件及一个hello.h头文件组成,其编译过程如图所示:,26,手动编译,并运行最后生成的可执行二进制程序hello,fhfh:/my_experiment/4z/tw$ gcc -c hello.c fhfh:/my_experiment/4z/tw$ gcc -c add.c fhfh:/my_experiment/4z/tw$ gcc -c

10、sub.c fhfh:/my_experiment/4z/tw$ gcc -o hello hello.o add.o sub.o,27,hello:hello.o add.o sub.o gcc -o hello hello.o add.o sub.o hello.o:hello.c hello.h gcc -c hello.c add.o: add.c gcc -c add.c sub.o: sub.c gcc -c sub.c,编辑Makefile文件,其内容如下:,fhfh:/my_experiment/4z/tw$ make gcc -c hello.c gcc -c add.c g

11、cc -c sub.c gcc -o hello hello.o add.o sub.o,有了Makefile文件,使用make工具, 直接输入make就可以得到可执行程序hello,28,交叉编译的概念 交叉编译(Cross compiler)是指在某个系统平台下编译出在另一个系统平台上运行的可执行文件。对于嵌入式Linux开发就是在x86 CPU的PC平台的Linux系统下编译出能够在arm开发板上运行的可执行程序,一般把PC平台叫做宿主机(host),开发板叫做目标机(target)。开发嵌入式系统时,由于受限于嵌入式系统产品的特有限制,也就是其不可能具有很大的储存容量及丰富的人机接口,所以开发环境都必须建立在PC计算机(Host)上,因此必须使用交叉编译技术。,29,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号