第3章 Linux编程环境.

Slides:



Advertisements
Similar presentations
Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
Advertisements

第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Tool Command Language --11级ACM班 金天行.
LINUX 环境下程序开发基础 曙光用户培训课程系列 课程时间:1.5小时 更新日期:2008年3月.
Oracle数据库 Oracle 子程序.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Linux环境下程序编译 曙光信息产业(北京)有限公司.
Linux Programming Prerequisite
第7章:文件共享 与远程控制——回顾 第8章:bash脚本编程 本章教学目标: 了解shell程序的基本结构 网络文件系统NFS的概念
张吉豫 GNU编译工具链使用简介 张吉豫
陈香兰 助教:陈博、李春华 嵌入式操作系统 陈香兰 助教:陈博、李春华.
第二讲 搭建Java Web开发环境 主讲人:孙娜
学习前的准备工作 讲师:burning.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
嵌入式操作系统 陈香兰 Spring 2006 中国科学技术大学计算机系.
SVN服务器的搭建(Windows) 柳峰
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
作业调度系统常用命令.
VSS使用简介 王树升
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Gzip编译及调试 曹益华
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
三:基于Eclipse的集成开发环境搭建与使用
SOA – Experiment 2: Query Classification Web Service
编程作业3:网页正文抽取 (10分).
第二章 登录UNIX操作系统.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第四章 团队音乐会序幕: 团队协作平台的快速创建
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
Platform Builder使用介绍 WINCE系统应用开发流程说明 ACTION RDC 杨 涛 2005.Dec.3th
姚金宇 MIT SCHEME 使用说明 姚金宇
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 Excel电子表格制作软件 4.4 函数(一).
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
2019/5/8 第2章 数据分析软件介绍.
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
顺序结构程序设计 ——关于“字符串”和数值.
<编程达人入门课程> 本节内容 有符号数与无符号数 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
Presentation transcript:

第3章 Linux编程环境

本章内容包括常用的Linux开发工具使用技巧和 Linux编程技术。本章内容比Linux编程方面的书 籍简略得多,重点介绍常用的Linux编程工具和技 巧。通过本章学习可以使读者快速掌握基本的 Linux开发工具,为后续的嵌入式Linux开发打下 基础。 www.farsight.com.cn

本章目标 常用Linux编程工具 GNU工具链的使用技巧 Linux编程库的API介绍

3.1 Linux常用工具 3.1.1 Shell简介 在Linux系统开发过程中,开发者或者用户与Linux 系统(内核)进行交互的时候需要一个平台,这 就是Shell,有了它,用户就能通过键盘输入与系 统进行交互了。 单从字面意思上理解,Shell的本意是“壳”的意 思,通俗地讲就是内部核心与外部使用者发生联 系的介质。

Shell工作示意图

Shell提供了用户与操作系统之间通讯的方式。这 种通信可以以交互方式(从键盘输入,并且可以 立即得到响应),或者以Shell script(非交互)方 式执行。

3.1.2 常用Shell命令 1.Shell命令的一般格式 命令名 【选项】 【参数1】 【参数2】… 命令行输入实际上是可以编辑的一个文本缓冲区, 在命令行中就可以输入Shell命令了。在按“回车 键”以确认当前操作之前,可以对输入的内容进 行编辑。

2.命令行输入 命令行输入实际上是可以编辑的一个文本缓冲区 ,在命令行中就可以输入Shell命令了。在按“回 车键”以确认当前操作之前,可以对输入的内容 进行编辑。

3.常用Shell命令介绍 3.常用Shell命令介绍 (1)输入命令行自动补齐(automatic command line completion)功能 (2)对目录和文件的操作 (3)用户管理 (4)文件的打包和压缩 (5)rpm软件包的安装 (6)源码维护基本命令 diff命令 (7)配置、编译、安装源码包软件 (8)中断Shell命令执行的方法 (9)模块管理指令

3.1.3 编写Shell脚本 Shell不仅仅是命令的执行,而且是一种编程语言 ,它提供了定义变量和参数的手段以及丰富的程 序控制结构

1.建立脚本 编辑Shell脚本文件使用Linux下的普通编辑器如vi 、Emacs等即可。Linux下的Shell默认采用Bash, 所以本书也主要以Bash脚本为例介绍 2.Shell变量 Shell脚本中主要有以下几种变量:系统变量,环 境变量,用户变量

3.流程控制 同传统的编程语言一样,Shell提供了很多特性, 如数据变量、参数传递、判断、流程控制、数据 输入和输出、子程序及以中断处理等。 4.Shell脚本的执行 如果已经写好Shell脚本,运行该脚本可以有以下 的几种方法。 (1)设置好脚本的执行权限之后再执行脚本 (2)使用Bash内部指令"source" (3)直接使用sh命令来执行

3.1.4 正则表达式 正则表达式是一种可以用于模式匹配和替换的有 效工具。正则表达式描述了一种字符串匹配的模 式,可以用来检查一个串是否含有某种子串、将 匹配的子串做替换或者从某个串中取出符合某个 条件的子串等。 正则表达式由普通字符(例如字符a到z)以及特 殊字符(称为特殊字符)组成特定文字模式。当 从一个文件或命令中抽取或者过滤文本时,使用 正则表达式可以简化命令中的匹配表达。

3.1.5 程序编辑器 编辑器是系统的重要工具之一,在各种操作系统 中,编辑器都是必不可少的部件。Linux系统提供 了一个完整的编辑器家族系列,如Ed、Ex、Vi和 Emacs等,按功能它们可以分为两大类。  行编辑器(如Ed、Ex)  全屏幕编辑器(如Vi、Emacs)

Vi有3种基本工作模式:指令行模式、文本输入模 式、末行模式,它们的相互关系如下。

3.2 Makefile 3.2.1 GNU make GNU make最初是Unix系统下的一个工具,设计之 初是为了维护C程序文件不必要的重新编译,它是 一个自动生成和维护目标程序的工具。 make是一个解释Makefile文件中指令的命令工具, 其最基本的功能就是通过Makefile文件来描述源程 序之间的相互关系并自动维护编译工作,它会告 知系统以何种方式编译和链接程序。

通常状况之下GNU make的工作流程如下。 ① 查找当前目录下的Makefile文件 ② 初始化文件中的变量 ③ 分析Makefile中的所有规则 ④ 为所有的目标文件创建依赖关系 ⑤ 根据依赖关系,决定哪些目标文件要重新生成 ⑥ 执行生成命令

3.2.2 Makefile规则语法 Makefile有其自身特定的编写格式并且遵循一定的 语法规则。 #注释 目标文件:依赖文件列表 ............... <Tab>命令列表

3.2.3 Makefile文件中变量的使用 一般来说,Makefile文件中变量的应用主要有以下几个方面 。 1.代表一个文件列表 2.代表编译命令选项 所有编译命令都带有相同编译选项时(比如-Wall -O2等), 可以将该编译选项赋给一个变量,这样方便了引用。同时 ,如果改变编译选项的时候,只需改变该变量值即可,而 不必在每处用到编译选项的地方都做改动。

3.3 二进制代码工具的使用 3.3.1 GNU Binutils工具介绍 在Linux下建立嵌入式交叉编译环境要用到一系列的 工具链(tool-chain),主要有比如GNU Binutils、 Gcc、Glibc、Gdb等,它们都属于GNU的工具集。 GNU Binutils工具集里主要有以下一系列的部件。  as GNU的汇编器  ld GNU的链接器  add2line 将地址转换成文件名或行号对,以便调 试程序  ar 从文件中创建、修改、扩展文件  gasp 汇编宏处理器

 nm 从目标代码文件中列举所有变量(包括变量值和变量类型),如果没有指 定目标文件,则默认是a.out文件  objcopy objcopy工具使用GNU BSD库,它可以把目标文件的内容从一种文件 格式复制到另一种格式的目标文件中  add2line 把程序地址转换为文件名和行号  objdump 显示目标文件信息  readelf 显示elf文件信息  ranlib 生成索引以加快对归档文件的访问,并将其保存到这个归档文件中  size 列出目标模块或文件的代码尺寸  strings 打印可打印的目标代码字符(至少4个字符),打印字符多少可以控制  strip 放弃所有符号连接  c++filt 链接器ld使用该命令可以过滤C++符号和Java符号,防止重载函数冲突  gprof 显示程序调用段的各种数据

3.3.2 Binutils工具软件使用 1.汇编器 Linux平台的标准汇编器是GAS,它是GCC所依赖的 后台汇编工具,通常包含在binutils 软件包中。 2.链接器 GNU链接器使用一个命令语言脚本来控制链接过程 。

3.4 编译器GCC的使用 3.4.1 GCC编译器介绍 GCC是GNU项目的编译器组件之一,也是GNU软件产品家族具有代表性 的作品。GCC的发展大体经历了下面的几个阶段。 ① 1987年,第一版的GCC发布。 ② 2001.6.18,GCC3.0正式发布。 ③ 2004.4.20,GCC 3.4.0版本发布。 ④ 2005.4.22,最新版本的GCC 4.0发布,官方网站:http://gcc.gnu.org。 GCC是一组编译工具的总称,其软件包里包含众多的工具,按其类型, 主要有以下的分类。 ① C编译器 cc, cc1, cc1plus, gcc ② C++编译器 c++, cc1plus, g++ ③ 源码预处理程序 cpp, cpp0 ④ 库文件 libgcc.a, libgcc_eh.a, libgcc_s.so, libiberty.a, libstdc++.[a,so], libsupc++.a

3.4.2 GCC编译选项解析 GCC是Linux下基于命令行的c语言编译器,其基 本的使用语法如下。 gcc [option | filename ]… 对于编译C++的源程序,其基本的语法如下。 g++ [ option | filename ]… GCC拥有众多的命令选项,有超过100个的编译选 项可用,按其应用有如下的分类。

1.常用编译选项 2.出错检查和警告提示选项 3.代码优化选项 4.调试分析选项

3.5 调试器GDB的使用技巧 3.5.1 GDB调试器介绍 以下是GDB所提供的一些功能。  启动程序,并且可以设置运行环境和参数来运行 指定程序。  让程序在指定断点处停止执行。  对程序做出相应的调整,这样就能纠正一个错误 后继续调试。 使用gdb命令的语法如下。 # gdb [参数] Filename

3.5.2 GDB调试命令 常用到的GDB调试命令。 命 令 说 明 file 指定要调试的可执行程序 kill 终止正在调试的可执行程序 命 令 说 明 file 指定要调试的可执行程序 kill 终止正在调试的可执行程序 next 执行一行源代码但并不进入函数内部 list 部分列出源代码 step 执行一行源代码并不进入函数内部 run 执行当前的可执行程序 quit 结束gdb调试任务 watch 可以检查一个变量的值而不管它何时被改变 print 打印表达式的值到标准输出 break N 在指定的第N行源代码设置断点 info break 显示当前断点清单,包括到达断点处的次数等 info files 显示被调试文件的详细信息 info func 显示所有的函数名 info local  显示当函数中的局部变量信息 info prog 显示被调试程序的执行状态 info var 显示所有的全局和静态变量名称 make 在不退出 gdb 的情况下运行 make 工具 shell 在不退出 gdb 的情况下运行shell命令 continue 继续执行正在调试的程序

3.6 Linux编程库 3.6.1 Linux编程库介绍 Linux下的库文件分为共享库和静态库2大类,它 们两者的差别仅在程序执行时所需的代码是在运 行时动态加载的,还是在编译时静态加载的。此 外,通常共享库以.so(Shared Object)结尾,静态链 接库通常以.a结尾(Archive)。在终端下查看库 的内容,通常共享库为绿色,而静态库为黑色。 Linux的库一般在/lib或/usr/lib目录下。它主要存放 系统的链接库文件,没有该目录则系统无法正常 运行。

3.6.2 Linux系统调用 从字面意思上理解,系统调用说的是操作系统提供给用户 程序调用的一组“特殊”接口。Linux系统有200多个系统 调用,这些系统调用按照功能分类大致可分为以下几个方 面。  进程控制  文件系统控制  系统控制  内存管理  网络管理  socket控制  用户管理  进程间通信

3.6.3 Linux线程库 简单地讲,进程是资源管理的最小单位,线程是 程序执行的最小单位。一个进程至少需要一个线 程作为它的指令执行体,进程管理着资源(比如 cpu、内存、文件等),而将线程分配到某个cpu 上执行。一个进程当然可以拥有多个线程。  pthread_create() 创建新的线程  pthread_join() 等待线程结束  pthread_self() 获取线程ID  pthread_detach() 用于让线程脱离  pthread_exit() 终止线程

Q&A www.farsight.com.cn

谢谢! www.farsight.com.cn