1.了解Linux系统基本操作方法,学会独立使用该系统。
2.熟悉Linux下如何编辑、编译和运行一个C语言程序。
3.学会利用gcc、gdb编译、调试C程序。
1.Linux下各种应用程序的使用。
2.常用的SHELL命令。
3.vim编辑器和emacs编辑器使用方法。
4.Linux下C程序编辑、编译和运行过程。
当用户登录到字符界面系统或使用终端模拟窗口时,就是在和称为shell的命令解释程序进行通信。当用户在键盘上输入一条命令时,shell程序将对命令进行解释并完成相应的动作。这种动作可能是执行用户的应用程序,或者是调用一个编辑器、GNU/Linux实用程序或其他标准程序,或者是一条错误信息,告诉用户输入了错误的命令。
1.目录操作
mkdir abc 创建一个目录abc
cd abc 将工作目录改变到abc
cd 改变当前目录到主目录
ls 列出当前目录的内容
ls -l 输出当前目录内容的长列表,每个目录或文件占一行
pwd 显示当前目录的全路径
2.文件显示实用程序
cat mx.c 显示mx.c文件内容
more mx.c 分屏显示mx.c内容
tail mx.c 显示文件后几行
cat file1 file2 连接file1 和file2
head filename 显示文件filename的开始10行
wc filename 统计文件filename中的行数、单词数和字符数
od 文件 查看非文本文件
3.文件管理实用程序
cp file1 file2 将文件1复制到文件2
mv file1 file2 将文件重命名为file2
rm filename 删除文件filename
rm -i filename 请求用户确认删除
4.数据操作实用程序
tty 显示当前终端的路径和文件名
who 显示当前登录用户的列表
sort filename 显示文件filename中的行的排序结果
spell filename 检查文件filename中的拼写错误
5.其他实用程序
date 输出系统日期和时间
cal 显示本月的日历。cal 2002 显示2002年的日历
clear 清除终端屏幕
history 显示你以前执行过的命令的列表
man 显示实用程序的有用信息,并提供该实用程序的基本用法
echo 读取参数并把它写到输出
在编写文本或计算机程序时,需要创建文件、插入新行、重新排列行、修改内容等,计算机文本编辑器就是用来完成这些工作的。
Vim编辑器的两种操作模式是命令模式和输入模式(如图2所示)。当vim处于命令模式时,可以输入vim命令。例如,可以删除文本并从vim中退出。在输入模式下,vim将把用户所输入的任何内容都当作文本信息,并将它们显示在屏幕上。
vi的工作模式见图所示。
⑴命令模式
在输入模式下,按ESC可切换到命令模式。命令模式下,可选用下列指令离开vi:
命令 作 用
:q! 离开vi,并放弃刚在缓冲区内编辑的内容
:wq 将缓冲区内的资料写入当前文件中,并离开vi
:ZZ 同wq
:x 同wq
:w 将缓冲区内的资料写入当前文件中,但并不离开vi
:q 离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用
命令模式下光标的移动 :
命 令 作 用
h或左箭头 左移一个字符
J 下移一个字符
k 上移一个字符
l 右移一个字符
0 移至该行的首
$ 移至该行的末
^ 移至该行的第一个字符处
H 移至窗口的第一列
M 移至窗口中间那一列
L 移至窗口的最后一列
G 移至该文件的最后一列
W, W 下一个单词 (W 忽略标点)
b, B 上一个单词 (B 忽略标点)
⑵输入模式
输入以下命令即可进入vi输入模式:
命 令 作 用
a(append) 在光标之后加入资料
A 在该行之末加入资料
i(insert) 在光标之前加入资料
I 在该行之首加入资料
o(open) 新增一行于该行之下,供输入资料用
O 新增一行于该行之上,供输入资料用
Dd 删除当前光标所在行
X 删除当前光标字符
X 删除当前光标之前字符
U 撤消
· 重做
F 查找
s 替换,例如:将文件中的所有"FOX"换成"duck",用":%s/FOX/duck/g"
ESC 离开输入模式
启动vim命令:
命令 作用
vim filename 从第一行开始编辑filename文件
vim +filename 从最后一行开始编辑filename文件
vim -r filename 在系统崩溃之后恢复filename文件
vim -R filename 以只读方式编辑filename文件
更多用法见 info vi。
vim 下程序录入过程:
①$ vim aaa.c ↙ 进入vim命令模式
② i ↙ 进入输入模式输入 C源程序(或文本)
③ ESC ↙ 回到命令模式
④ ZZ ↙ 保存文件并推出vim
⑤ CAT aaa.c ↙ 显示aaa.c 文件内容
GNU/Linux中通常使用的C编译器是GNU gcc。编译器把源程序编译生成目标代码的任务分为以下4步:
a. 预处理,把预处理命令扫描处理完毕;
b. 编译,把预处理后的结果编译成汇编或者目标模块;
c. 汇编,把编译出来的结果汇编成具体CPU上的目标代码模块;
d. 连接,把多个目标代码模块连接生成一个大的目标模块;
1.使用语法:
gcc [ option | filename ]…
其中 option 为 gcc 使用时的选项,而 filename 为 gcc要处理的文件。
2.GCC选项
GCC的选项有很多类,这类选项控制着GCC程序的运行,以达到特定的编译目的。
⑴全局选项(OVERALL OPTIONS)
全局开关用来控制在“GCC功能介绍”中的GCC的4个步骤的运行,在缺省的情况下,这4个步骤都是要执行的,但是当给定一些全局开关后,这些步骤就会在 某一步停止执行,这产生中间结果,例如可能你只是需要中间生成的预处理的结果或者是汇编文件(比如你的目的是为了看某个CPU上的汇编语言怎么写)。
① –x language
对于源文件是用什么语言编写的,可以通过文件名的后缀来标示,也可以用这开关。指定输入文件是什么语言编写的,language 可以是如下的内容
a. c
b. objective-c
c. c-header
d. c++
e.cpp-output
f.assembler
g.assembler-with-cpp
②–x none
把-x开关都给关掉了。
③ –c
编译成把源文件目标代码,不做连接的动作。
④–S
把源文件编译成汇编代码,不做汇编和连接的动作。
⑤–E
只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作。
⑥ –o file (常用)
指明输出文件名是file。
⑦–v
把整个编译过程的输出信息都给打印出来。
⑧–pipe
由于gcc的工作分为好几步才完成,所以需要在过程中生成临时文件,使用-pipe就是用管道替换临时文件。
⑵ 语言相关选项(Language Options)
用来处理和语言相关的选项。
①–ansi
这个开关让GCC编译器把所有的GNU的编译器特性都给关掉,让你的程序可以和ansi标准兼容。
②–include file
在编译之前,把file包含进去,相当于在所有编译的源文件最前面加入了一个#include 语句,
③–C
同-E参数配合使用。让预处理后的结果,把注释保留,让人能够比较好读它。
⑶连接开关(Linker Options)
用来控制连接过程的开关选项。
① –llibrary
连接库文件开关。例如-lugl,则是把程序同libugl.a文件进行连接。
② –lobjc
这个开关用在面向对象的C语言文件的库文件处理中。
③ –nostartfiles
在连接的时候不把系统相关的启动代码连接进来。
④ –nostdlib
在连接的时候不把系统相关的启动文件和系统相关的库连接进来。
⑤–static
在一些系统上支持动态连接,这个开关则不允许动态连接。
⑥shared
生成可共享的被其他程序连接的目标模块。
⑷目录相关开关(Directory Options)
用于定义与目录操作相关的开关。
–Ldir
搜寻库文件(*.a)的路径。
⑸调试开关(Debugging Options)
–g
把调试开关打开,让编译的目标文件有调试信息。
–V version
用来告诉编译器使用它的多少版本的功能,version参数用来表示版本。
四、熟悉gdb调试工具
LINUX包含了一个叫gdb的GNU调试程序。gdb是一个用来调试C和C++程序的强有力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。它具有以下一些功能:
·监视程序中变量的值;
·设置断点以使程序在指定的代码行上停止执行;
·一行行的执行代码。
以下是利用gdb进行调试的步骤:
1.调试编译代码
为了使gdb正常工作,必须使你的程序在编译时包含调试信息。调试信息里包含你程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联。
在编译时用 –g 选项打开调试选项。
2.gdb基本命令
命 令 描 述
file 装入欲调试的可执行文件
kill 终止正在调试的程序
list 列出产生执行文件的源代码部分
next 执行一行源代码但不进入函数内部
step 执行一行源代码并进入函数内部
run 执行当前被调试的程序
quit 终止gdb
watch 监视一个变量的值而不管它何时被改变
break 在代码里设置断点,使程序执行到这里时被挂起
make 不退出gdb就可以重新产生可执行文件
shell 不离开gdb就执行UNIX shell 命令
3.应用举例
(1)设有一源程序greet.c
(2)编译,gcc -ggdb –o greet greet.c,出错
(3)gdb greet ,出现提示符(gdb),此时可在提示符下输入gdb的命令了,如:
(gdb)run
(gdb)list
(4)退出调试状态,返回系统提示符下, (gdb)quit
五、掌握Linux下C程序编辑运行过程
Linux下编写C程序要经过以下几个步骤:
⑴启动常用的编辑器,键入C源程序代码。
例如,点击“主菜单”\“附件”\“文本编辑器”,进入编辑环境,输入C源程序,保存并命名为hello.c
# include
void main(void)
{
Printf(“hello world!\n”);
}
⑵编译源程序
点击“主菜单”\“系统工具”\“终端”,进入命令行。用gcc编译器对C源程序进行编译,以生成一个可执行文件。方法:
gcc -o hello.out hello.c ↙
⑶运行可执行文件
./ hello.out ↙
注:命令行中 -o选项表示要求编译器输出可执行文件名为hello.out文件,hello.c是源程序文件。