嵌入式LINUXC编程韶关学院计算机科学学院第二章Linux环境下C语言的开发C语言的简单回顾Linux下的C语言开发环境嵌入式LinuxC语言的开发Linux系统嵌入式Linux中程序的运行原理教学提纲第二章教学要点C语言概要Linux环境中C语言的开发嵌入式Linux中的程序运行一、C语言的简单回顾最早期的计算机语言二进制语言和汇编语言都是一种面向机器的语言,与具体的机器硬件环境紧密相关,而为了减轻程序设计人员的负担,使其着力于面向问题的算法设计,脱离于对机器的具体硬件要求,从60年代开始产生了高级语言。如:ALGOL、FORTRANPASCAL和C语言。高级语言的产生C语言的发展历史ALGOL语言(1958年,ACM小组(美国计算机协会)离硬件系统很远)CPL语言(1963年,剑桥,复合程序设计语言)BCPL语言(1967年,剑桥,马丁.理查德简化)B语言(1970年,贝尔实验室,肯.汤普逊进一步简化,更突出了硬件处理能力。C语言(1972年,布朗.W.卡尼汉和丹尼斯.M.利奇对B语言进行完善和扩充)C语言是伴随UNIX操作系统而产生的。1987年,美国国家标准协会(ANSI)制定C语言标准称为ANSIC,产品有:MicrosftC、TurboC、BorlandC。在C语言的基础上,开发了C++语言、C#语言。目前流行的C语言编译系统是以1990年国际化组织制定的ISOC标准。C语言的发展历史C语言的特点一种模块化的程序设计语言语言简洁、使用方便、灵活。C语言一共有关键字三十二个,九个控制语句。运算丰富,数据处理能力强大。三十四个运算符。可移植性好。可以直接调用系统功能,实现对硬件的操作。与Linux结合紧密。具有高级语言与低级语言两重性的特点。Linux操作系统中提供了C语言的开发环境。开发环境的组成部分如下:编辑器:Vi和Emacs,完成程序源代码的编写。编译链接器:GCC提供了C语言的编译器、汇编器、链接器。是Linux中C语言开发的核心工具。程序调试工具:GDB是命令行调试工具,可以设置断点、单步运行、查看变量等。工程管理工具:make和Makefile。二、Linux下的C语言开发环境嵌入式LinuxC语言的开发过程如下图所示:三、嵌入式LinuxC语言的开发C语言源程序和头文件等文本编辑工具GCC工具GDB工具目标文件、头文件、可执行文件等MAKE各种编译参数配置嵌入式LinuxC语言的开发工具文本编辑工具Vi、EmacsC代码(*.C)编译器GCC汇编代码(*.S)目标代码(*.o)链接器(ld)可执行程序其它目标代码(*.o)调试器GDBLinux是一种可以自由传播和免费使用的操作系统,它和UNIX类似,可以在各种硬件平台上运行并且开放全部的源代码,于1991年由芬兰程序员林纳斯·托瓦兹发布。四、Linux系统Linux系统概述多用户、多任务。采用阶层式目录结构、文件归类清晣。支持多种文件系统。Linux系统具有良好的移植性Linux可以运行各种CPU上。Linux系统具有良好的用户界面(两种界面)。Linux系统具有安全、高效和稳定的特点。开放和免费。(遵照开放式系统互联的标准)Linux系统主要特点Linux操作系统版本分为两类:内核版本(只负责控制硬件、管理文件系统、程序进程。)如2.3.15-4Linux的版本发行版本(集成了用户应用和系统管理工具等)如RT-Linux、CLinux、Xlinux等Linux的安装和基本使用Linux终端(显示器和键盘,Shell命令)LinuxShellShell是一个用户与Linux系统间的接口程序。目前流行的Shell有ash、bash、ksh、csh、zsh。Shell命令基本格式为:命令名[选项]参数1参数2……例如:ls-l-r/home/peidachangLinux中,文件是一个非常重要的一个概念,除了硬盘上存储的文件以外,Linux还把显示器、键盘、打印机等输入输出设备以及网络接口都当作文件处理。目录结构采用树形结构组织,目录和文件有三种权限:只读、只写、可执行利用chmode命令可改变权限。Linux的文件和目录结构Linux的常用命令涉及到文件管理、文档编辑、文件传输、磁盘维护、网络通信、系统管理、系统设置和设备管理。Linux的常用命令进入与退出Linux系统登录:两种用户(root“#”与普通用户“$”)虚拟控制台的选择,允许用户在多个控制台上工作。reboothaltshutdownexit的使用Linux文本处理命令(sort)sort命令功能是对数据库记录文件中的各行进行排序。它有许多非常实用的选项,它是一个非常强大的数据管理工具。格式如下:sort[选项]文件选项:-m、-c–u–o–f等uniq命令功能是删除重复的行格式:uniq[选项]文件选项:有-c–d–n等Linux文本处理命令(uniq)tar命令功能是可以为文件和目录创建档案。利用tar命令,用户可以为某一特定用户创建档案(备份文件),也可以在档案中改变文件,或者向档案加入新的文件。格式:tar[主选项+辅选项]文件或目录主选项:c、r、t、u、x辅选项:b、f、k、m、M、v、w、zLinux备份与压缩命令(tar)tar命令举例tar-cvf/tmp/etc.tar/etc==仅打包,不压缩!tar-zcvf/tmp/etc.tar.gz/etc==打包后,以gzip压缩tar-jcvf/tmp/etc.tar.bz2/etc==打包后,以bzip2压缩范例一:将整个/etc目录下的文件全部打包成为/tmp/etc.tartar-ztvf/tmp/etc.tar.gz范例二:查阅上述/tmp/etc.tar.gz文件内有哪些文件?tar命令举例范例三:将/tmp/etc.tar.gz文件解压缩在/usr/local/src底下cd/usr/local/srctar-zxvf/tmp/etc.tar.gzgzip是在linux系统中经常使用的一个对文件进行压缩和解压缩的命令。格式:gzip[选项]压缩(解压缩)的文件名选项有:-c–d–l–r–t–v-numLinux备份与压缩命令(gzip)注:gzip不能压缩整个目录。可以使用tar先打包,再压缩!gzip举例说明例1:把/home目录下的每个文件压缩成.gz文件。$cd/home$gzip*$lsm.txt.gzsort.txt.gzxx.com.gz$gzip-dv*mm.txt.gz43.1%-----replacedwithmm.txtsort.txt.gz43.1%-----replacedwithsort.txtxx.com.gz43.1%-----replacedwithxx.com$lsmm.txtsort.txtxx.com例2:把例1中每个压缩的文件解压,并列出详细的信息。unzip命令将MSWindows下的压缩软件winzip压缩的文件展开。格式:unzip[选项]压缩文件名.zip选项:-x-v-t-d–z-nLinux备份与压缩命令(unzip)Linux系统管理命令(功能介绍)wall命令功能:对全部已登录用户发送信息。write命令功能:向系统中某个用户发送信息。mesg命令功能:设定是否允许其他用户用write命令。sync命令功能:强制把内存中的数据写回硬盘,以免数据丢失。shutdown命令功能:安全的关闭或重启系统,但只有超级用户才能有这个权限。free命令功能:查看当前系统的内存的使用情况。uptime显示系统运行时间、登录用户个数、平均负载Linux系统管理命令(功能介绍)df命令功能:检查文件系统的磁盘空间占用情况。du命令功能:统计目录所占的磁盘空间大小。dd命令把指定的输入文件复制指定的输出文件中fdformat对软盘进行格式化Linux磁盘管理命令(功能介绍)Linux下开发环境有两类:字符界面的开发环境和图形化集成开发环境。字符模式开发流程:一般使用Vi、Vim、Emacs文本编辑工具编写源程序,然后GCC来编译,GDB来调试、如果开发大型的程序,要使用CVS对项目进行管理。五、嵌入式Linux中运行原理c语言程序运行环境应用程序库函数系统调用操作系统