3.0Linux开发基础.ppt
《3.0Linux开发基础.ppt》由会员分享,可在线阅读,更多相关《3.0Linux开发基础.ppt(57页珍藏版)》请在三一文库上搜索。
1、学习目标,学员需要掌握如下内容: Linux 的编程常识 Linux下vim的使用 编译器gcc的使用 调试器gdb的使用 项目管理工具make的使用,Linux开发基础,Linux 的编程常识,用户程序、函数库、系统调用、 内核,Linux 的编程常识,系统调用 系统调用是操作系统提供给外部应用程序的一组特殊的接口。 应用程序通过这组特殊“接口”来获得操作系统内核提供的服务。 在 C 语言中,操作系统的系统调用通常通过函数调用的形式完成,这是因为这些函数封装了系统调用的细节,将系统调用的入口、参数以及返回值用 C 语言的函数调用过程实现。,Linux 的编程常识,应用编程接口API 程序员并
2、不是直接使用系统调用。 程序员调用的是函数库中定义的应用编程接口API。 也就是,通过应用编程接口,使用系统调用,请求内核服务。 一个API可能对应几个系统调用。 通过系统调用就可以请求内核服务,为何还用引入应用编程接口API呢。,C 函数库 GNU 的C函数库glibc,是 Linux 上最重要的函数库。 它定义了 ANSI C 标准指定的所有的库函数,以及由 POSIX 或其他 UNIX 操作系统统变种指定的附加特色,还包括有与 GNU 系统相关的扩展。 ANSI C :C 编程语言的国际标准 POSIX:GNU C 函数库实现了 POSIX.1 (POSIX 系统应用程序编程接口)指定的
3、所有函数。同时,GUN C 函数库还支持部分由 POSIX.2 (POSIX Shell 和 工具标准 )指定的函数。 Berkeley Unix:BSD 和 SunOS。GNU C 函数库定义了某些 UNIX 版本中尚未标准化的函数 。,Linux 的编程常识,库和头文件的保存位置 函数库 /lib:系统必备共享库 /usr/lib:标准共享库和静态库 /usr/i486-linux-libc5/lib:libc5 兼容性函数库 /usr/X11R6/lib:X11R6 的函数库 /usr/local/lib:本地函数库 头文件 /usr/include:系统头文件 /usr/local/i
4、nclude:本地头文件,Linux 的编程常识,C 语言编程风格 在Linux上编程主要有两种编程风格: GNU风格和Linux内核风格。 GNU风格 例如:函数的开头的左花括号放到最左边,避免把任何其它的左花括号、左括号或者左方括号放到最左边。对于函数定义来说,把函数名的起始字符放到最左边也同样重要。 int lots_of_args (int an_integer, long a_long, short a_short, double a_double, float a_float) ,Linux 的编程常识,C 语言编程风格 Linux 内核编程风格 缩进:Linux内核缩进风格是8个
5、字符。 括号的位置:将开始的大括号放在一行的最后,而将结束的大括号放在一行的第一位。 命名:命名尽量简洁。 函数:函数最好短小精悍,而且只能做一件事。 详见:/usr/src/linux/Documentation/CodingStyle,Linux 的编程常识,Linux 编程环境概述,主要涉及到编辑器、编译链接器、调试器及项目管理工具。 编辑器 Linux 中最常用的编辑器有 Vi(Vim)和 Emacs 编译链接器 在Linux中,最常用的编译器是Gcc编译器。它是GNU推出的功引导代码能强大、性能优越的多平台编译器. 调试器 Gdb 是绝大多数 Linux 开发人员所使用的调试器,它可
6、以方便地设置断点、单步跟踪等,Linux 编程环境概述,项目管理器 Linux 中的项目管理器“make” 是一种控制编译或者重复编译软件的工具。 它还能自动管理软件编译的内容、方式和时机,使程序员能够把精力集中在代码的编写上而不是在源代码的组织上。,VI是Linux最常用的编辑器,Linux里提供的是VI的加强版VIM,但同VI是完全兼容。 Vi 3种基本工作模式:命令模式、插入模式、末行模式。,Linux下VIM的使用,VI 3种基本工作模式: 命令模式下,键入的每个字符都被当作一个命令处理。刚启动时,处于命令模式。在插入模式下按“ESC”,也可以回到指令模式。 插入模式。在命令模式下按“
7、a”、“i”、“o”进入插入模式。 末行命令模式也是一种常用模式,用于输入命令进行文字编辑的辅助功能。通过冒号“:”进入末行模式。例如“:q”,Linux下VIM的使用,VIM进入: 在系统提示符“$”下键入命令vim,后面跟上想要编辑(或者建立)的文件名,VIM 可以自动载入所要编辑的文件或是开启一个新文件。 VIM的退出: 可以在命令行方式下使用命令“:wq”或者“:q!”,前者的功能是写文件并从VIM中退出,后者的功能是从VIM中退出,但不保存所作的修改(注意冒号)。 Vim中的语法加亮: :syntax enable ,也可以在配置文件中激活该功能。,Linux下VIM的使用,Vimr
8、c配置文件 Vim在启动时会读取该文件。该文件可以放在用户目录下/.vimrc,/etc/vim/vimrc 编写语法可参考vi的用户手册的41章。 Vim的使用教程:推荐使用vimtutor,学习vim的最好方式就是练习,而vimturor是非常好的教学平台。 Vimtutor 使用系统默认语言 Vimtutor en 英文教程 练习vim的使用,Linux下VIM的使用,vi的常用命令,GNU C ANSI C (标准 C ) GNU C 支持GNU 扩展的C 语言。GNC CC对C 语言提供了很多扩展,这些扩展对优化、目标代码布局、更安全的检查等方面提供了很强的支持。 Linux 内核代
9、码使用了大量的 GNU C 扩展,以至于能够编译 Linux 内核的唯一编译器是 GNU CC,以前甚至出现过编译 Linux 内核要使用特殊的 GNU CC 版本的情况。,GCC编译器的使用,GCC(GNU Compiler Collection) GNU CC(简称为 Gcc)是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C、C+和 Object C 等语言编写的程序。 Gcc 又是一个交叉平台编译器,在当前CPU平台上为多种不同体系结构的硬件平台开发软件。适合在嵌入式领域的开发编译。,GCC编译器的使用,gcc则通过后缀来区别输入文件的类别。 gcc所遵循的部分后缀约
10、定规则: .c : C语言源代码文件; .a : 是由目标文件构成的档案库文件; .C,.cc或.cxx : 是C+源代码文件; .h : 是程序所包含的头文件; .i : 是已经预处理过的C源代码文件; .ii : 是已经预处理过的C+源代码文件; .o : 是编译后的目标文件; .s : 是汇编语言源代码文件; .S : 是经过预编译的汇编语言源代码文件。,GCC编译器的使用,GCC 通常gcc后跟一些选项和文件名来使用 GCC 编译器 gcc options filenames 其中options就是编译器所需要的参数,filenames给出相关的文件名称 例如:gcc o hello
11、hello.c,GCC编译器的使用,Gcc的编译流程 预处理阶段: gcc E hello.c o hello.i 编译阶段: gcc S hello.i o hello.s 汇编阶段:gcc c hello.s o hello.o 链接阶段:gcc hello.o o hello 执行:./hello,GCC编译器的使用,GCC的选项 GCC 有超过100个的编译选项可用. 主要包括编译处理选项、警告选项、出错选项、优化选项、体系结构选项。 -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。 -o outpu
12、t_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 -S 编译选项告诉 GCC 在为 C 代码产生了汇编语言文件后停止编译. GCC 产生的汇编语言文件的缺省扩展名是 .s .,GCC编译器的使用,GCC 选项 -g,产生符号调试工具(GNU的gdb)所必要的符号信息,要想对源代码进行调试,我们就必须加入这个选项。 -O,对程序进行优化编译、连接,产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。 -O2,比-O更好的优化编译、连接,当然整个编译、连接过程
13、会更慢。,GCC编译器的使用,GCC 选项 -Idirname,在头文件的搜索路径列表中添加dirname目录。这个选项的作用是:到指定的dirname目录中去寻找需要的头文件。 -Ldirname,在库文件的搜索路径列表中添加dirname目录。在预设状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的档案库文件,这个选项 告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找。 -lname,在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为“libm.a”的数学函数库。,GC
14、C编译器的使用,GCC 选项 更为详尽的资料可以参看Linux系统的联机帮助。 (man) 很多的 GCC 选项包括一个以上的字符. 因此你必须为每个选项指定各自的连字符, 并且就象大多数 Linux 命令一样你不能在一个单独的连字符后跟一组选项. gcc g O2 o hello hello.c gcc包含的c/c+编译器 一般c程序就用gcc编译,c+程序就用g+编译,GCC编译器的使用,练习使用gcc编译C源文件 通过Hello world程序,熟悉gcc及其选项的使用。,Hello World hello.c int main (void) printf(“hello world!n”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 3.0 Linux 开发 基础
链接地址:https://www.31doc.com/p-3408227.html