linux编程指南

上传人:第*** 文档编号:61704240 上传时间:2018-12-10 格式:PPT 页数:56 大小:133.51KB
返回 下载 相关 举报
linux编程指南_第1页
第1页 / 共56页
linux编程指南_第2页
第2页 / 共56页
linux编程指南_第3页
第3页 / 共56页
linux编程指南_第4页
第4页 / 共56页
linux编程指南_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《linux编程指南》由会员分享,可在线阅读,更多相关《linux编程指南(56页珍藏版)》请在金锄头文库上搜索。

1、shell编程,在shell接口执行一个复杂任务时,可将多个shell命令组合为一个shell脚本程序 脚本文件中可定义变量,使用循环、条件控制命令的执行 脚本文件中也可以构造表达式进行算术和比较运算 一个shell程序可看作一个新的复杂shell命令 Linux套件支持bash,tcsh,cshell,他们有其各自的shell程序设计语言,其语法略有差别,我们主要以bash shell为例说明,脚本文件的构建,是一个包含shell命令的文本文件,可使用任何文本编辑器进行编辑 脚本文件的执行: $ . Myshell.sh $ sh myshell.sh $ chmod u+x myshell

2、.sh $ chmod 700 myshell.sh,脚本文件的注释,脚本文件(myshell.sh)如下: #the following is a script can initialize the interface. Cd homeniuproject1 Echo welcome! Date,脚本文件引用其他脚本文件,脚本文件中可执行shell命令,定义shell变量,执行其他脚本文件 执行脚本文件即初始化一个新进程,如果脚本中调用另一个脚本文件,另一个进程开始运行,本脚本文件进程则等待,脚本文件的输出变量,如果需要将本脚本文件中定义的变量为调用的脚本文件使用,需要使用命令export

3、变量名 完成,为该进程产生的每个子进程定义一个变量拷贝 实例如下:,Dispfile Myfile=“list” Export myfile Echo “display $myfile” Pr t n $myfile printfile,Printfile Echo “printing $myfile” Lp $myfile &,$display Displaying list 1 screen 2 modem 3 paper Printing list $,Shell的算术运算和关系运算:let,该运算用于shell程序流程控制 Hello3prg Again=1 While let “ag

4、ain = 3” do echo $again hello let “again =again + 1” done $hello3prg 1 hello 2 hello 3 hello,Shell程序的控制结构实现,控制程序的两个部分: 测试条件判断 为真执行命令/为假不执行命令 控制结构种类 条件:if,case 循环:while,for,for_in,实现比较操作的test命令,命令语法: $test value option value $test string =string 选项决定比较的内容: 整数 字符串 逻辑 文件测试等详见p213214,使用 vi 编辑器打开文件前做一个备份

5、($mycp file1 file2),具体的形式如下: #!/bin/sh if cp “$1” “$2“ then vi “$1“ else echo “Failed to create backup copy“ fi,这个脚本说明了 if-then-else 结构的语法,也显示了 cp 命令的出口状态值是如何被 if 结构用来决定下一步操作。假如 cp 的返回值是 0,脚本将调用 vi 编辑这个文件;否则,脚本将显示故障信息,然后退出。 不要忘记结束符 fi,它的作用是结束 if 结构。忘记使用 fi 是 Bash 脚本中常见的错误之一。,标准 “for” 循环简单示例:,#!/usr/

6、bin/env bash for x in one two three four do echo number $x done,输出: number one number two number three number four,在本例中,指定了四个英语单词,但是字列表也可以引用磁盘上的文件,甚至文件通配符。看看下面的例子,该例演示如何使用标准 shell 通配符:,#!/usr/bin/env bash for myfile in /etc/r* do if -d “$myfile“ then echo “$myfile (dir)“ else echo “$myfile“ fi done,

7、输出: /etc/rc.d (dir) /etc/resolv.conf /etc/resolv.conf /etc/rpc,以上代码列出在 /etc 中每个以 “r“ 开头的文件。要做到这点,bash 在执行循环之前首先取得通配符 /etc/r*,然后扩展它,用字符串 /etc/rc.d /etc/resolv.conf /etc/resolv.conf /etc/rpc 替换。一旦进入循环,根据 myfile 是否为目录,“-d“ 条件运算符用来执行两个不同操作。如果是目录,则将 “(dir)“ 附加到输出行。 还可以在字列表中使用多个通配符、甚至是环境变量:,修改扩展名:.txt改为.d

8、oc文档,#!/bin/sh FILES=ls /txt/*.txt for txt in $FILES ; do doc=echo $txt | sed “s/.txt/.doc/“ mv $txt $doc done 这样可以将*.txt文档修改成*.doc文档。,输入“meow file1 file2 .”相当于“cat file1 file2 .“,文件 meow : #!/bin/sh # Filename : meow for i ; do cat $i done,输入“listbin”相当于“ls /bin/*“,文件 listbin: #!/bin/sh # Filename

9、: listbin for i in /bin/* ; do echo $i done,找出/etc/rc.d/rcX.d/S*,并执行,for i in /etc/rc.d/rc$runlevel.d/S*; do # Check if the script is there. ! -f $i & continue # Check if the subsystem is already up. subsys=$i#/etc/rc.d/rc$runlevel.d/S? -f /var/lock/subsys/$subsys | -f /var/lock/subsys/$subsys.init

10、& continue # Bring the subsystem up. $i start done,编译器、函数库、编程工具,Linux可提供实用程序创建可执行程序 GCC工具提供C语言和C+语言的编译器 符号调试器GDB可定位运行时错误 编辑源代码工具、软件打包工具、其他语言的编译工具 应用程序的开发需要使用函数库,如Xwindows函数库、GDBM函数库、,C编译器:GCC,GNU 版本的C编译器. Linux下命令GCC调用GNU C编译器,GCC命令依次调用以下四个部件: 预处理器:处理预编译命令 编译器:产生汇编代码 汇编装配器:产生目标代码 链接器:使目标代码产生可执行程序,本小

11、节目录,运行 gcc/egcs gcc/egcs 的主要选项 gdb gdb 的常用命令 gdb 使用范例 其他程序/库工具 (ar, objdump, nm, size, strings, strip, .) 创建和使用静态库 创建和使用共享库 使用高级共享库特性,运行 gcc,Linux 中最重要的软件开发工具是 GCC。GCC 是 GNU 的 C 和 C+ 编译器。实际上,GCC 能够编译三种语言:C、C+ 和 Object C(C 语言的一种面向对象扩展)。利用 gcc 命令可同时编译并连接 C 和 C+ 源程序。 例如,有两个源文件 main.c 和 factorial.c,现在要编

12、译生成一个计算阶乘的程序。,factorial.c #include #include int factorial (int n) if (n #include int factorial (int n); int main (int argc, char *argv) int n; if (argc 2) printf (“Usage: %s nn“, argv 0); return -1; else n = atoi (argv1); printf (“Factorial of %d is %d.n“, n, factorial (n); return 0; ,编译生成可执行文件,并执行,

13、编译链接: $ gcc -o factorial main.c factorial.c 运行可执行程序: $ ./factorial 5 Factorial of 5 is 120. GCC 可同时用来编译 C 程序和 C+ 程序。一般来说,C 编译器通过源文件的后缀名来判断是 C 程序还是 C+ 程序。在 Linux 中,C 源文件的后缀名为 .c,而 C+ 源文件的后缀名为 .C 或 .cpp。,编译并连接 C+ 源文件,通常使用 g+ 命令来完成 C+ 程序的编译和连接,该程序会自动调用 gcc 实现编译。对于如下的 C+ 源文件(hello.C): #include void main

14、 (void) cout “Hello, world!“ endl; 则可以如下调用 g+ 命令编译、连接并生成可执行文件: $ g+ -o hello hello.C $ ./hello 结果:Hello, world!,文件扩展名,Gcc通过识别文件: .c .o .s .C .cpp,gcc 的主要选项(-option),-s生成汇编代码 -p预编译的输出结果 -c 编译生成目标代码 -g 使用GNU 调试器 -l DIRECTORY 指定文件包含路径 -l LIBRARY 连接时搜索指定函数库路径 -o FILE 生成指定的输出文件。 -shared 生成共享目标文件。通常用在建立共享

15、库时。 -static 禁止使用共享连接,编译链接分别进行提高效率,$gcc main.c factorial.o o factorial 选项的作用: $gcc o factorial main.c factorial.c,ELF和a.out二进制格式,可执行程序采用的格式: a.out:早期格式,与共享库格式不同 ELF : (executable and linking format)采用的标准格式,便于引用共享库,gdb,GNU 的调试器称为 gdb,该程序是一个交互式工具,工作在字符模式。在 X Window 系统中, 有一个 gdb 的前端图形工具,称为 xxgdb。gdb 是功能

16、强大的调试程序,可完成如下的调试 任务: * 设置断点; * 监视程序变量的值; * 程序的单步执行; * 修改变量的值。,在可以使用 gdb 调试程序之前,必须使用 -g 选项编译源文件。可在 makefile 中如下定义 CFLAGS 变量: CFLAGS = -g 运行 gdb 调试程序时通常使用如下的命令: gdb progname 在 gdb 提示符处键入help,将列出命令的分类,主要的分类有: * aliases:命令别名 * breakpoints:断点定义; * data:数据查看; * files:指定并查看文件; * internals:维护命令; * running:程序执行; * stack:调用栈查看; * statu:状态查看; * tracepoints:跟踪程序执行。 键入 help 后跟命令的分类名,可获得该类命令的详细清单。,1.7.4

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

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