通信软件设计方法-第二讲-LINUX下C语言程序.ppt

上传人:sh****n 文档编号:7533408 上传时间:2020-03-22 格式:PPT 页数:54 大小:653.50KB
返回 下载 相关 举报
通信软件设计方法-第二讲-LINUX下C语言程序.ppt_第1页
第1页 / 共54页
通信软件设计方法-第二讲-LINUX下C语言程序.ppt_第2页
第2页 / 共54页
通信软件设计方法-第二讲-LINUX下C语言程序.ppt_第3页
第3页 / 共54页
点击查看更多>>
资源描述
通信软件设计方法杨雄编写 二零零九年四月 1 讲授内容 1 LINUX概况2 LINUX下C语言程序编译和调试2 1 LINUX开发环境学习 实验 3 通信系统和通信软件4 基于TCP IP的主机到主机通信软件示例4 1 SOCKET程序设计 实验 5 无状态通信协议程序设计6 LINUX内核程序设计7 低层232接口通信程序设计8 设计一个简单链路层以及程序8 1 IP软件和链路层软件设计 实验 2 第二讲LINUX下C语言程序编译和调试 上讲回顾 开机 执行内存00000开始的程序 阅读bios配置并初始化 调光盘或硬盘0000道扇区的程序进入内存某个区域 执行这个程序 这个程序是操作系统的第一级引导程序 这个程序把LINUX中的boot装入内存 执行boot 装入LINUX内核 启动0号进程 0号根据系统配置表 类似注册表 进程生成后台进程 为每个终端启动getty进程 等待用户登陆 getty为登陆用户启动shell进程 3 LINUX内核结构 内核主要部分是静态的 也有部分内核程序是动态调入的称为动态模块和进程的区别是不能被调度去取得CPU而是等待进程来调用它 和静态内核一样 4 第二讲LINUX下C语言程序编译和调试 shell的作用 等待终端用户输入命令 检查命令的语法合法性 到文件系统中找这个命令 可执行文件 调入这个命令 可执行文件 执行这个可执行文件 程序 执行完返回shell 内核 getty shell 命令字串 这个命令界面 shell 内存管理 CPU调度 文件系统 硬盘管理 命令程序 shellshellshellshell 5 本章重点问题 LINUX下如何编译C语言程序vi的使用 6 LINUX操作系统 Hello 李阳 第二讲LINUX下C语言程序编译和调试 7 C语言代码 程序 intmain intargc char argv if argc 2 printf ERROR n exit 1 printf nHello s n argv 1 exit 1 第二讲LINUX下C语言程序编译和调试 示例程序2 8 本讲实验操作一 1 开机进入登陆画面2 用root用户或你的用户登陆3 manvi4 manvi vi 5 morevi 9 LINUX操作界面Shell及常用命令vigccmakefile 第二讲LINUX下C语言程序编译和调试 10 Linux终端使用基础 什么是Shell 11 shell的基本形式 shell的种类 查看shell种类 bin sh bin bash bin bash2 bin ash bin bsh bin tcsh bin cshash 贝尔实验室开发的shell bsh是对ash的符号链接 bash GNU的BourneAgainshell 是GNU操作系统上默认的shell sh以及bash2都是对它的符号链接 tcsh BerkeleyUNIXCshell csh是对它的符号链接 12 shell的基本形式 shell命令的基本格式是 命令名 选项 shell提示符 man命令 检查某个命令或函数的使用方法 manmkdir 13 目录和文件的基本操作 文件查看和连接命令catcat 选项 分屏显示命令moremore 选项 按页显示命令lessless 选项 14 复制 删除和移动命令 复制命令cpcp 选项 或者cp 选项 删除命令rmrm 选项 移动或重命名命令mvmv 选项 或者mv 选项 15 创建和删除目录命令 创建目录命令mkdirmkdir p 删除删除空目录命令rmdirrmdir p 16 切换工作目录和显示目录命令 切换工作目录命令cdcd显示当前路径命令pwdpwd查看目录命令lsls 选项 17 查找与定位命令 查找文件或者目录命令findfind path expression 文件定位命令locate slocatelocate 选项 18 链接lnln 选项 改变文件或目录时间的命令touchtouch 选项 file2 链接命令 19 压缩解压缩命令 命令格式为 tar 辅选项 查看文件内容 tart z vf文件名压缩和解压命令gzipgzip 选项 解压命令unzipunzip 选项 普通文件 tar tar gz 文件 c z vf x z vf 20 常用命令 显示文字命令echoecho n 显示日历命令calcal 选项 月 年 日期时间命令date显示日期和时间的命令格式为 date 选项 FormatString 设置日期和时间的命令格式为 date清除屏幕命令clear 21 软件包管理命令rpm 安装软件rpm i 或者 install 安装选项 删除rpm e 或者 erase 删除选项 pkg1 pkgN升级rpm U 或者 upgrade 升级选项 file1 rpm fileN rpm查询rpm q 或者 query 查询选项 pkg1 pkgN校验已安装的软件包rpm V 或者 verify 校验选项 pkg1 pkgN 22 联机帮助命令 maninfohelp command 23 LINUX操作界面shellvigccmakefile 第二讲LINUX下C语言程序编译和调试 24 本讲实验操作二 1 cdext 12 vihello c3 学习vi的使用1 命令模式使用的命令 dd删除一行p拷贝刚才删除的一行上下左右键光标的移动Del键删除一个符号ZZi进入插入 输入和编辑模式 Esc退出 进入末行命令模式 25 本讲实验操作二 4 学习vi的使用2 插入模式使用的命令 字母 数字 符号 回车等上下左右键光标的移动Esc键返回命令模式3 末行命令模式使用的命令 w写入文件 w 强行写入文件q退出编辑 q 强行退出vi 26 三种工作方式 27 进入与退出 进入vi的命令 vivi文件名 标识空行 状态行 28 进入与退出 命令参数 n 进入vi后 光标停在文件的第n行 末行 字符串 第一个指定字符串处 退出vi命令 命令状态 两个大写的字母Z 即ZZ 功能 存盘并退出 末行模式 w 存盘不退出 w文件名 存在指定文件中 退出 w 文件名 覆盖保存在指定文件中 并退出 29 进入与退出 末行模式q 退出vi q 退出不保存 wq 保存文件后 退出 x 同ZZ 退出vi 不保存 进入插入模式的命令 i 在光标所在位置的前面插入 I 行的开头插入 a 的位置的后面插入 A 行的后面插入 o 行的下面新建一行插入 O 行上面新建一行插入 30 光标的移动 插入 命令模式下 利用键盘上的方向键 命令模式下 i h w b 0 31 文本编辑 删除命令 x 删除当前字符 d命令 32 其它命令 查找命令 向文件头方向查找合适的文本 n 重复前一个查找命令 N 向文件尾方向 33 本讲实验操作三 1 cdext 12 vihello c3 gcc ohhello c4 h5 vimakefile 编辑如下h hello cgcc ohhello c6 rm r oh 之后用ll7 make8 ll9 hLiYang 34 LINUX操作界面shellvigccmakefile 第二讲LINUX下C语言程序编译和调试 35 GCC命令行详解 1 gcc包含的c c 编译器gcc cc c g gcc和cc是一样的 c 和g 是一样的 一般c程序就用gcc编译 c 程序就用g 编译2 gcc的基本用法gcctest c这样将编译出一个名为a out的程序gcctest c otest这样将编译出一个名为test的程序 o参数用来指定生成程序的名字3 为什么会出现undefinedreferenceto xxxxx 错误 首先这是链接错误 不是编译错误有指定链接程序要用到得库 比如你的程序里用到了一些数学函数 那么你就要在编译数里指定程序要链接数学库 方法是在编译命令行里加入 lm 36 GCC命令行详解 4 l参数和 L参数 l参数就是用来指定程序要链接的库 l参数紧接着就是库名 那么库名跟真正的库文件名有什么关系呢 就拿数学库来说 他的库名是m 他的库文件名是libm so 很容易看出 把库文件名的头lib和尾 so去掉就是库名了 我们自已要用到一个第三方提供的库名字叫libtest so 那么我们只要把libtest so拷贝到 usr lib里 编译时加上 ltest参数 我们就能用上libtest so库了 当然要用libtest so库里的函数 我们还需要与libtest so配套的头文件 37 GCC命令行详解 5 include和 I参数 include用来包含头文件 但一般情况下包含头文件都在源码里用 includexxxxxx实现 include参数很少用 I参数是用来指定头文件目录 usr include目录一般是不用指定的 gcc知道去那里找 但是如果头文件不在 usr include里我们就要用 I参数指定了 比如头文件放在 myinclude目录里 那编译命令行就要加上 I myinclude参数了 如果不加你会得到一个 xxxx h Nosuchfileordirectory 的错误 I参数可以用相对路径 比如头文件在当前目录 可以用 I 来指定 38 GCC命令行详解 6 O参数这是一个程序优化参数 一般用 O2就是 用来优化程序用的 比如gcctest c O2 优化得到的程序比没优化的要小 执行速度可能也有所提高7 shared参数编译动态库时要用到 比如gcc sharedtest c olibtest so 39 GCC命令行详解 8 几个相关的环境变量PKG CONFIG PATH 用来指定pkg config用到的pc文件的路径 默认是 usr lib pkgconfig pc文件是文本文件 扩展名是 pc 里面定义开发包的安装路径 Libs参数和Cflags参数等等 CC 用来指定c编译器 CXX 用来指定cxx编译器 LIBS 跟上面的 libs作用差不多 CFLAGS 跟上面的 cflags作用差不多 CC CXX LIBS CFLAGS手动编译时一般用不上 在做configure时有时用到 一般情况下不用管 环境变量设定方法 exportENV NAME xxxxxxxxxxxxxxxxx 40 GCC命令行详解 9 关于交叉编译交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上 比如在我们的PC平台 X86CPU 上编译出能运行在sparcCPU平台上的程序 编译得到的程序在X86CPU平台上是不能运行的 必须放到sparcCPU平台上才能运行 当然两个平台用的都是linux 这种方法在异平台移植和嵌入式开发时用得非常普遍 相对与交叉编译 我们平常做的编译就叫本地编译 也就是在当前平台编译 编译得到的程序也是在本地执行 用来编译这种程序的编译器就叫交叉编译器 相对来说 用来做本地编译的就叫本地编译器 一般用的都是gcc 但这种gcc跟本地的gcc编译器是不一样的 需要在编译gcc时用特定的configure参数才能得到支持交叉编译的gcc 为了不跟本地编译器混淆 交叉编译器的名字一般都有前缀 比如sparc xxxx linux gnu gcc sparc xxxx linux gnu g 等等 41 GCC命令行详解 10 交叉编译器的使用方法使用方法跟本地的gcc差不多 但有一点特殊的是 必须用 L和 I参数指定编译器用sparc系统的库和头文件 不能用本地 X86 的库 头文件有时可以用本地的 例子 sparc xxxx linux gnu gcctest c L path to sparcLib I path to sparcInclude 42 LINUX操作界面shellvigccmakefile 第二讲LINUX下C语言程序编译和调试 43 MAKEFILE 1 make大型程序维护工具Makefile或makefile 告诉make维护一个大型程序 该做什么 Makefile说明了组成程序的各模块间的相互关系及更新模块时必须进行的动作 make按照这些说明自动地维护这些模块 Netdefs h头文件Setwork c源文件编译Subrs onetwork o目标文件连接Network可执行文件 44 MAKEFILE 在makefile Makefile 中 自顶向下说明各模块之间的依赖关系及实现方法 network network osubrs o 1 cc onetworknetwork osubrs o 2 network o etdefs h 3 cc cnetwork c 4 subrs o etdefs h 5 cc csubrs c 6 其中 3 6 可以简化为 隐含的规则 network osubrs o netdefs h make makenetwork make fmakefile 45 MAKEFILE 2 makefile要点宏 变量 CC gcc CC test c currenttarget firstprerequisite allprerequisites后缀规则 suffixrules 46 MAKEFILE c o CC c CFLAGS o o c CC c CFLAGS o 47 MAKEFILE 代表的意义分别是 目标文件 所有的依赖文件 第一个依赖文件 c o 这个规则表示所有的 o文件都是依赖与相应的 c文件的 48 LINUX操作系统 Hello 李阳 第二讲LINUX下C语言程序编译和调试 49 C语言代码 程序 intmain intargc char argv if argc 2 printf 命令参数不正确 n exit 1 printf nHello s n argv 1 exit 1 第二讲LINUX下C语言程序编译和调试 示例程序2 50 1 用你的用户名称登陆LINUX2 cd你的工作目录3 vic h c 编辑源程序 源代码 vi是一个编辑软件 也是一个LINUX命令 c h c是一个文件名称 其内容就是你要编辑的源代码 vi的操作的特别之处是存在3个状态 插入状态 命令状态 行命令状态插入状态下也可以用上下左右键来移动光标 第二讲LINUX下C语言程序编译和调试 51 makefile文件内容c h c h ogcc oc hc h c 4 vimakefile 编辑makefile文件 5 make6 c h李阳 c h是可以执行的命令 第二讲LINUX下C语言程序编译和调试 52 本讲需要掌握的概念和方法 LINUX操作系统1 vi命令如何使用 2 gcc命令如何使用 3 makefile文件的作用是什么 和什么命令搭配 4 shell是什么 起什么作用 5 内核 进程 终端 shell 用户之间的关系什么 53 第二讲结束
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!