linux开发基础相关知识简介

上传人:F****n 文档编号:94209528 上传时间:2019-08-04 格式:PPT 页数:88 大小:621KB
返回 下载 相关 举报
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编程概述 文本编辑器vi Linux下函数库 GCC及其使用 调试工具gdb GNU make和makefile,Linux编程概述,Linux软件开发一直在Internet环境下讲行。这个环境是全球性的,编程人员来自世界各地。只要能够访问Web站点,就可以启动一个以Linux为基础的软件项目。 Linux开发工作经常是在Linux用户决定共同完成一个项目时开始的。当开发工作完成后,该软件就被放到Internet站点上,任何用户都可以访问和下载它。由于这个活跃的开发环境,新的以Linux为基础的软件功能日益强大,而且呈

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

3、完成。 shell编程语言如BASH、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的条件中进行赋值。 请在名字中使用下划线以分割单词,尽量使用小写;把大写字母留给宏和枚举常量,以及根据统一惯例使用的前缀

5、。例如,应该使用类似ignore_space_change_flag的名字;不要使用类似iCantReadThis的名字。 用于表明一个命令行选项是否给出的变量应该在选项含义的说明之后,而不是选项字符之后被命名。,Linux 内核编程风格,Linux内核缩进风格是8个字符。 Linux内核风格采用K&R标准,将开始的大括号放在一行的最后,而将结束的大括号放在一行的第一位。 命名尽量简洁。 不应该使用诸如ThisVariableIsATemporaryCounter之类的名字。应该命名为tmp,这样容易书写,也不难理解。 命名全局变量,应该用描述性命名方式,例如应该命名“count_active

6、_users()”,而不是“cntusr()”。 本地变量应该避免过长。 函数最好短小精悍,一般来说不要让函数的参数多于10个,否则应该尝试分解这个过于复杂的函数。 通常情况,注释说明代码的功能,而不是其实现原理。避免把注释插到函数体内,而写到函数前面,说明其功能,如果这个函数的确很复杂,其中需要有部分注释,可以写些简短的注释来说明那些重要的部分,但是不能过多。,文本编辑器vi,vi的模式 vi的进入 命令模式 插入模式 末行模式,vi的模式,Command Mode (命令模式) 这是执行vi后的缺省模式 此时键盘输入当作命令 命令有大小写之区分 Input Mode (插入模式) 使用 a

7、、i、o、c、r、s 进入插入模式 用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上 按下 ESC 键即可回到 Command Mode,vi的模式,Last Mode (末行模式) 在 Command Line 按下 : 即可进入该模式 用来进行保存文件、打开文档或环境的设定 命令有大小写之分,vi的进入和内容输入,进入: vi 文件名 输入文件内容 (进入插入模式) 新增 (append) a 从光标所在位置后面开始新增内容 A 从光标所在行最后面的地方开始新增内容。 插入 (insert) i 从光标所在位置前面开始插入内容 I 从光标所在行的第一个非空白字符前面开始插

8、入资料。 开始 (open) o 在光标所在行下新增一行并进入输入模式。 O 在光标所在行上新增一行并进入输入模式。,(命令模式),命令模式,1、光标的移动 h 左移一个字符 l 右移一个字符 j 下移一行 k 上移一行 w,W 跳至后一个字的开头(W忽略标点) b,B 跳至前一个字的开头(B忽略标点) e 移动到后一个字的末尾 至本行第一个非空字符 $ 至行尾 0 至行首 H 移动到当前窗口的第一列 M 移动到当前窗口的中间列 L 移动到视窗的最后一列 ) 光标所在位置到下个句子的第一个字母 ( 光标所在位置到该句子的第一个字母 光标所在位置到该段落的最后一个字母 光标所在位置到该段落的第一

9、个字母,命令模式,1、光标的移动(续) nH 将光标移到屏幕的第 n 行 nL 将光标移到屏幕的倒数第 n 行 CTRL-d 向下半页 CTRL-f 向下一页 CTRL-u 向上半页 CTRL-b 向上一页 n- 减号移动到上一行的第一个非空白字符,前面加上数字可以指定移动到以 上 n 行 n+ 加号移动到下一行的第一个非空白字符,前面加上数字可以指定移动到以下 n 行,命令模式,2、删除 x 删除光标所在字符 X 删除光标前面的字符 s 删除光标所在字符,并进入输入模式 S 删除光标所在的行,并进入输入模式 dd 删除光标所在的行 D 从光标位置开始删除到行尾 d与光标移动命令的组合,命令模

10、式,3、修改 r 修改光标所在字符,r 后接着要修改的字符。如,rc 可以用字符“ c ”替换光标所指向的当前字符 R 进入替换状态,新增内容会覆盖原先内容,直到按 ESC 回到命令模式下为止 cc 修改光标所在行 C 修改从光标位置到该行末尾的内容 c 与光标移动命令的组合,命令模式,4、复制和移动 yy 复制当前行到内存缓冲区 nyy 复制 n 行内容到内存缓冲区 y与光标移动的组合 p 将缓冲区的内容粘贴到光标的后面 P 将缓冲区的内容粘贴到光标的前面 另:在末行模式下实现移动 :n1,n2 m n3 : 把 n1到n2 行内容搬到第 n3 行后,5、搜索字符串 /pattern 移至下

11、一个包含pattern的行 ?pattern 移至上一个包含pattern的行 / 往下重复查找 ? 往上重复查找 n 在同一方向重复查找 N 在相反方向重复查找 /pattern/+n 移至下一个pattern所在行后的第n行 ?pattern?-n 移至上一个Pattern所在行前的第n行 6、其他 u 撤销前一条命令的结果,*. $ / 包含在查找字符串中,要用转义字符( ),命令模式,末行模式,1、文件的保存和退出 :w 保存 :q 退出 :w! 强制保存 :q! 强制退出 :wq 保存退出 :wq! 强制保存退出,末行模式,2、字符串的替换 :s/str1/str2/ 用字符串 st

12、r2 替换行中首次出现的字符串 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 行 编辑多个文件 vi file1 file2 :n 编辑下一个文件 :e filename 编辑指定文件,Linux下函数库(1/3),一个“程序函数库”就是一个文件包含了一些编译

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

14、y_library.a file1.o file2.o 然后运行 ranlib,以给库加入一些索引信息,Linux下函数库(2/3),共享函数库(shared libraries):当一个可执行程序在启动的时候被加载的函数。每个共享函数库都有个特殊的名字,称作“soname”。soname名字命名必须以“lib”作为前缀,然后是函数库的名字,然后是“.so”,最后是版本号信息。 优点:多进程使用同一函数库;修改函数库不需重新连编。 安装一个新版本的函数库的时候,要先将这些函数库文件拷贝到一些特定的目录中,运行ldconfig就可以。ldconfig检查已经存在的库文件,然后创建soname的符

15、号链接到真正的函数库,同时设置/etc/ld.so.cache这个缓冲文件。 例如,创建两个目标文件(a.o和b.o),然后创建一个包含a.o和b.o的共享函数库。 gcc -fPIC -g -c -Wall a.cgcc -fPIC -g -c -Wall b.cgcc -shared -Wl,-soname,liblusterstuff.so.1 -o liblusterstuff.so.1.0.1 a.o b.o lc 注:” -fPIC ”是位置无关参数, ”-g”和“Wall”参数不是必须的。,Linux下函数库(3/3),函数库和头文件的保存位置 a. 函数库 /lib:系统必备共

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

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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