《精编》Linux开发基础相关知识简介

上传人:tang****xu4 文档编号:133392060 上传时间:2020-05-26 格式:PPT 页数:88 大小:166KB
返回 下载 相关 举报
《精编》Linux开发基础相关知识简介_第1页
第1页 / 共88页
《精编》Linux开发基础相关知识简介_第2页
第2页 / 共88页
《精编》Linux开发基础相关知识简介_第3页
第3页 / 共88页
《精编》Linux开发基础相关知识简介_第4页
第4页 / 共88页
《精编》Linux开发基础相关知识简介_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《《精编》Linux开发基础相关知识简介》由会员分享,可在线阅读,更多相关《《精编》Linux开发基础相关知识简介(88页珍藏版)》请在金锄头文库上搜索。

1、Linux开发基础 原仓周 第二章Linux程序设计基础 C环境 Linux编程概述文本编辑器viLinux下函数库GCC及其使用调试工具gdbGNUmake和makefile Linux编程概述 Linux软件开发一直在Internet环境下讲行 这个环境是全球性的 编程人员来自世界各地 只要能够访问Web站点 就可以启动一个以Linux为基础的软件项目 Linux开发工作经常是在Linux用户决定共同完成一个项目时开始的 当开发工作完成后 该软件就被放到Internet站点上 任何用户都可以访问和下载它 由于这个活跃的开发环境 新的以Linux为基础的软件功能日益强大 而且呈现爆炸式的增长

2、态势 大多数Linux软件是经过自由软件基金会 FreeSoftwareFoundation 提供的GNU GNU即GNU snotUNIX 公开认证授权的 因而通常被称作GNU软件 GNU软件免费提供给用户使用 并被证明是非常可靠和高效的 许多流行的Linux实用程序如C编译器 shell和编辑器都是GNU软件应用程序 Linux程序需要首先转化为低级机器语言即所谓的二进制代码以后 才能被操作系统执行 例如编程时 先用普通的编程语言生成一系列指令 这些指令可被翻译为适当的可执行应用程序的二进制代码 这个翻译过程可由解释器一步步来完成 或者也可以立即由编译器明确地完成 shell编程语言如BA

3、SH TCSH GAWK Perl Tcl和Tk都利用自己的解释器 用这些语言编制的程序尽管是应用程序文件 但可以直接运行 编译器则不同 它将生成一个独立的二进制代码文件然后才可以运行 Linux编程风格 GNU风格Linux内核编程风格 GNU风格 1 2 函数返回类型说明和函数名分两行放置 函数起始字符和函数开头左花括号放到最左边 尽量不要让两个不同优先级的操作符出现在相同的对齐方式中 应该附加额外的括号使得代码缩进可以表示出嵌套 按照如下方式排版do while语句 do while 每个程序都应该以一段简短的说明其功能的注释开头 请为每个函数书写注释 说明函数是做什么的 需要哪些入口参

4、数 参数可能值的含义和用途 如果用了非常见的 非标准的东西 或者可能导致函数不能工作的任何可能的值 应该进行特殊说明 如果存在重要的返回值 也需要说明 不要声明多个变量时跨行 每一行都以一个新的声明开头 GNU风格 2 2 当一个if中嵌套了另一个if else时 应用花括号把if else括起来 要在同一个声明中同时说明结构标识和变量或者结构标识和类型定义 typedef 先定义变量 再使用 尽量避免在if的条件中进行赋值 请在名字中使用下划线以分割单词 尽量使用小写 把大写字母留给宏和枚举常量 以及根据统一惯例使用的前缀 例如 应该使用类似ignore space change flag的

5、名字 不要使用类似iCantReadThis的名字 用于表明一个命令行选项是否给出的变量应该在选项含义的说明之后 而不是选项字符之后被命名 Linux内核编程风格 Linux内核缩进风格是8个字符 Linux内核风格采用K R标准 将开始的大括号放在一行的最后 而将结束的大括号放在一行的第一位 命名尽量简洁 不应该使用诸如ThisVariableIsATemporaryCounter之类的名字 应该命名为tmp 这样容易书写 也不难理解 命名全局变量 应该用描述性命名方式 例如应该命名 count active users 而不是 cntusr 本地变量应该避免过长 函数最好短小精悍 一般来说

6、不要让函数的参数多于10个 否则应该尝试分解这个过于复杂的函数 通常情况 注释说明代码的功能 而不是其实现原理 避免把注释插到函数体内 而写到函数前面 说明其功能 如果这个函数的确很复杂 其中需要有部分注释 可以写些简短的注释来说明那些重要的部分 但是不能过多 文本编辑器vi vi的模式vi的进入命令模式插入模式末行模式 vi的模式 CommandMode 命令模式 这是执行vi后的缺省模式此时键盘输入当作命令命令有大小写之区分InputMode 插入模式 使用a i o c r s进入插入模式用户输入的任何字符都被vi当做文件内容保存起来 并将其显示在屏幕上按下ESC键即可回到Command

7、Mode vi的模式 LastMode 末行模式 在CommandLine按下 即可进入该模式用来进行保存文件 打开文档或环境的设定命令有大小写之分 vi的进入和内容输入 进入 vi文件名输入文件内容 进入插入模式 新增 append a从光标所在位置后面开始新增内容A从光标所在行最后面的地方开始新增内容 插入 insert i从光标所在位置前面开始插入内容I从光标所在行的第一个非空白字符前面开始插入资料 开始 open o在光标所在行下新增一行并进入输入模式 O在光标所在行上新增一行并进入输入模式 命令模式 命令模式 1 光标的移动h左移一个字符l右移一个字符j下移一行k上移一行w W跳至后

8、一个字的开头 W忽略标点 b B跳至前一个字的开头 B忽略标点 e移动到后一个字的末尾 至本行第一个非空字符 至行尾0至行首H移动到当前窗口的第一列M移动到当前窗口的中间列L移动到视窗的最后一列 光标所在位置到下个句子的第一个字母 光标所在位置到该句子的第一个字母 光标所在位置到该段落的最后一个字母 光标所在位置到该段落的第一个字母 命令模式 1 光标的移动 续 nH将光标移到屏幕的第n行nL将光标移到屏幕的倒数第n行CTRL d向下半页CTRL f向下一页CTRL u向上半页CTRL b向上一页n 减号移动到上一行的第一个非空白字符 前面加上数字可以指定移动到以上n行n 加号移动到下一行的第

9、一个非空白字符 前面加上数字可以指定移动到以下n行 命令模式 2 删除x删除光标所在字符X删除光标前面的字符s删除光标所在字符 并进入输入模式S删除光标所在的行 并进入输入模式dd删除光标所在的行D从光标位置开始删除到行尾d与光标移动命令的组合 命令模式 3 修改r修改光标所在字符 r后接着要修改的字符 如 rc可以用字符 c 替换光标所指向的当前字符R进入替换状态 新增内容会覆盖原先内容 直到按 ESC 回到命令模式下为止cc修改光标所在行C修改从光标位置到该行末尾的内容c与光标移动命令的组合 命令模式 4 复制和移动yy复制当前行到内存缓冲区nyy复制n行内容到内存缓冲区y与光标移动的组合

10、p将缓冲区的内容粘贴到光标的后面P将缓冲区的内容粘贴到光标的前面另 在末行模式下实现移动 n1 n2mn3 把n1到n2行内容搬到第n3行后 5 搜索字符串 pattern移至下一个包含pattern的行 pattern移至上一个包含pattern的行 往下重复查找 往上重复查找n在同一方向重复查找N在相反方向重复查找 pattern n移至下一个pattern所在行后的第n行 pattern n移至上一个Pattern所在行前的第n行6 其他u撤销前一条命令的结果 包含在查找字符串中 要用转义字符 命令模式 末行模式 1 文件的保存和退出 w保存 q退出 w 强制保存 q 强制退出 wq保存

11、退出 wq 强制保存退出 末行模式 2 字符串的替换 s str1 str2 用字符串str2替换行中首次出现的字符串str1 s str1 str2 g用字符串str2替换行中所有出现的字符串str1 s str1 str2 g用字符串str2替换正文当前行到末尾所有出现的字符串str1 1 s str1 str2 g用字符串str2替换正文中所有出现的字符串str1 g str1 s str2 g功能同上 末行模式 其他 n将光标移到第n行编辑多个文件vifile1file2 n编辑下一个文件 efilename编辑指定文件 Linux下函数库 1 3 一个 程序函数库 就是一个文件包含了

12、一些编译好的代码和数据 这些编译好的代码和数据可以在事后供其他的程序使用 程序函数库可以使整个程序更加模块化 更容易重新编译 而且更方便升级 可分为两种类型 静态函数库 staticlibraries 是一个普通的目标文件的集合 一般用 a 作为文件的后缀 静态函数库和共享函数库相比有很多的缺点 占用内存空间多 但使用ELF格式的静态库函数生成的代码可以比使用共享函数库的程序运行速度上快一些 可以用ar这个程序来创建一个静态函数库文件 或者往一个已经存在地静态函数库文件添加新的目标代码 例如 把file1 o和file2 o加入到my library a这个函数库文件 arrcsmy libr

13、ary afile1 ofile2 o然后运行ranlib 以给库加入一些索引信息 Linux下函数库 2 3 共享函数库 sharedlibraries 当一个可执行程序在启动的时候被加载的函数 每个共享函数库都有个特殊的名字 称作 soname soname名字命名必须以 lib 作为前缀 然后是函数库的名字 然后是 so 最后是版本号信息 优点 多进程使用同一函数库 修改函数库不需重新连编 安装一个新版本的函数库的时候 要先将这些函数库文件拷贝到一些特定的目录中 运行ldconfig就可以 ldconfig检查已经存在的库文件 然后创建soname的符号链接到真正的函数库 同时设置 et

14、c ld so cache这个缓冲文件 例如 创建两个目标文件 a o和b o 然后创建一个包含a o和b o的共享函数库 gcc fPIC g c Walla cgcc fPIC g c Wallb cgcc shared Wl soname liblusterstuff so 1 oliblusterstuff so 1 0 1a ob o lc注 fPIC 是位置无关参数 g 和 Wall 参数不是必须的 Linux下函数库 3 3 函数库和头文件的保存位置a 函数库 lib 系统必备共享函数库 usr lib 标准共享函数库和静态函数库 usr i486 linux libc5 lib

15、 libc5兼容性函数库 usr X11R6 lib X11R6的函数库 usr local lib 本地函数库b 头文件 usr include 系统头文件 usr local include 本地头文件c 共享函数库的相关配置和命令 etc ld so conf 包含共享库的搜索位置ldconfig 共享库管理工具 一般在更新了共享库之后要运行该命令ldd 可查看可执行文件所使用的共享函数库 使用GNUcc开发应用程序 gcc的简介可执行文件的格式gcc的使用 gcc的简介 gcc是GNU的C和C 编译器 实际上 gcc能够编译多种语言 C C 和ObjectC等 利用gcc命令可同时编译

16、并连接C和C 源程序 也可以对几个C源文件利用gcc编译 连接并生成可执行文件 gcc可以使程序员灵活地控制编译过程 编译过程一般可以分为下面四个阶段 每个阶段分别调用不同的工具进行处理 gcc的四个阶段 命令gcc首先调用cpp进行预处理 在预处理过程中 对源代码文件中的文件包含 include 预编译语句 如宏定义define等 进行分析 接着调用cc1进行编译 这个阶段根据输入文件生成以 o为后缀的目标文件 汇编过程是针对汇编语言的步骤 调用as进行工作 一般来讲 S或 s为后缀的汇编语言源代码文件汇编之后都生成以 o为后缀的目标文件 当所有的目标文件都生成之后 gcc就调用ld来完成最后的关键性工作 这个阶段就是连接 在连接阶段 所有的目标文件被安排在可执行程序中的恰当的位置 同时 该程序所调用到的库函数也从各自所在的函数库中连到合适的地方 可执行文件格式 Linux系统中可执行文件有两种格式 第一种格式是a out格式 这种格式用于早期的Linux系统以及Unix系统的原始格式 a out来自于UnixC编译程序默认的可执行文件名 当使用共享库时 a out格式就会发生问题

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

当前位置:首页 > 行业资料 > 其它行业文档

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