linux程序设计基础ppt
合集下载
Linux程序设计 3-第三章 Linux下简单的C程序设计PPT课件
目标代码中,而是在程序运行时才被载入。
Linux函数库的创建与使用(1)
/* unsgn_pow.c:库程序 */ unsigned long long unsgn_pow(unsigned int x, unsigned int y) {
unsigned long long res = 1;
if (y == 0) {
gcc ---编译阶段(2)
/* hello.s */
.file "hello.c"
.section
.rodata
.align 4
.LC0:
.string
"Hello! This is our
embedded world!"
.text
.globl main
.type main, @function
gcc ---库选项
• 函数库分为静态库和动态库两种,静态库是一系列的目标文件(.o文件)的归档文件(文件 名格式为libname.a),如果在编译某个程序时链接静态库,则链接器将会搜索静态库,从中 提取出它所需要的目标文件并直接拷贝到该程序的可执行二进制文件(ELF格式文件)之中;动
态库(文件名格式为libname.so[.主版本号.次版本号.发行号])在程序编译时并不会被链接到
gcc ---编译阶段(1)
接下来进行的是编译阶段,在这个阶段中,gcc首先要检查 代码的规范性、是否有语法错误等,以确定代码的实际要 做的工作,在检查无误后,gcc把代码翻译成汇编语言。用 户可以使用“-S”选项来进行查看,该选项只进行编译而不 进行汇编,生成汇编代码。
[root@localhost gcc]# gcc –S hello.i –o hello.s
Linux函数库的创建与使用(1)
/* unsgn_pow.c:库程序 */ unsigned long long unsgn_pow(unsigned int x, unsigned int y) {
unsigned long long res = 1;
if (y == 0) {
gcc ---编译阶段(2)
/* hello.s */
.file "hello.c"
.section
.rodata
.align 4
.LC0:
.string
"Hello! This is our
embedded world!"
.text
.globl main
.type main, @function
gcc ---库选项
• 函数库分为静态库和动态库两种,静态库是一系列的目标文件(.o文件)的归档文件(文件 名格式为libname.a),如果在编译某个程序时链接静态库,则链接器将会搜索静态库,从中 提取出它所需要的目标文件并直接拷贝到该程序的可执行二进制文件(ELF格式文件)之中;动
态库(文件名格式为libname.so[.主版本号.次版本号.发行号])在程序编译时并不会被链接到
gcc ---编译阶段(1)
接下来进行的是编译阶段,在这个阶段中,gcc首先要检查 代码的规范性、是否有语法错误等,以确定代码的实际要 做的工作,在检查无误后,gcc把代码翻译成汇编语言。用 户可以使用“-S”选项来进行查看,该选项只进行编译而不 进行汇编,生成汇编代码。
[root@localhost gcc]# gcc –S hello.i –o hello.s
Linux基础27页PPT
首页
Linux文件系统
▪ 文件命名约定
Linux可以支持长达256个字符的文件名称,在命令 中如果以文件名称作为参数,则文件名称中不能直接使用 以下字符:
! # $ % ^ & * ( ) [ ] { } ‘ “ / \ | ; < > 空格。
注意:在Linux中的文件名称是区分大小写的,“abc”与 “ABC”所代表的是不同的文件。
/dev目录下的设备文件分为两大类:即块设备文件 (权限字串首字符为b)及字符类型的设备文件(权限字 串首字符为c)。
首页
Linux文件系统
3.用户类型
Linux是一个真正意义上的多用户操作系统,用户要使用该系统,首 先 必须登 录 , 使用完 系统 后 ,必 须退 出。Linux下 有两种 用户:
首页
Linux文件系统
文件名称中的后缀往往用于标识文件性质,以便于管 理和使用文件,常见格式有: ▪ .txt 一般文本文件,和微软系统记事本文件格式一样
▪ .doc 信息文档 ▪ .sh shell过程文件 ▪ .html HTML超文本文件 ▪ .pl PERL语言编写的程序文件 ▪ .o 编译程序产生的目标文件 ▪ .tar tar命令产生的备份包文件 ▪ .gz gzip命令产生的压缩包文件 ▪ .rpm 由rpm产生的文件包,为linux程序安装包
首页
Linux目录命令
▪ 显示当前工作目录
[rootlocalhost root]# pwd
▪ 改变当前目录
[rootlocalhost root]# cd [directoryName]
▪ 创建目录
[rootlocalhost root]#mkdir [选项] DirectoryName
Linux文件系统
▪ 文件命名约定
Linux可以支持长达256个字符的文件名称,在命令 中如果以文件名称作为参数,则文件名称中不能直接使用 以下字符:
! # $ % ^ & * ( ) [ ] { } ‘ “ / \ | ; < > 空格。
注意:在Linux中的文件名称是区分大小写的,“abc”与 “ABC”所代表的是不同的文件。
/dev目录下的设备文件分为两大类:即块设备文件 (权限字串首字符为b)及字符类型的设备文件(权限字 串首字符为c)。
首页
Linux文件系统
3.用户类型
Linux是一个真正意义上的多用户操作系统,用户要使用该系统,首 先 必须登 录 , 使用完 系统 后 ,必 须退 出。Linux下 有两种 用户:
首页
Linux文件系统
文件名称中的后缀往往用于标识文件性质,以便于管 理和使用文件,常见格式有: ▪ .txt 一般文本文件,和微软系统记事本文件格式一样
▪ .doc 信息文档 ▪ .sh shell过程文件 ▪ .html HTML超文本文件 ▪ .pl PERL语言编写的程序文件 ▪ .o 编译程序产生的目标文件 ▪ .tar tar命令产生的备份包文件 ▪ .gz gzip命令产生的压缩包文件 ▪ .rpm 由rpm产生的文件包,为linux程序安装包
首页
Linux目录命令
▪ 显示当前工作目录
[rootlocalhost root]# pwd
▪ 改变当前目录
[rootlocalhost root]# cd [directoryName]
▪ 创建目录
[rootlocalhost root]#mkdir [选项] DirectoryName
Linux环境中的程序设计基础.ppt
通常,个人bash 环境设置都定义在 ~/.bashrc 文件里
变量
变量命名
变量名必须以字母或下划线开头,后面可以跟字母、数字 或下划线。任何其它字符都标志变量名的结束。
~/.bash_profile ~/.bash_login ~/.profile 在这些文件中,用户可以定义自己的环境变量,而且能够 覆盖在 /etc/profile 中定义的设置。
bash 配置文件
bash 启动后,将读入配置文件 ~/.bashrc ,并执行这 个文件中的所有内容。
另外,还可以从另一个 shell 或者 bash 自身启动一个新 的 bash,这种过程称为非登录交互式,启动新 bash 的命 令为 bash,此时所读入的唯一 bash 配置文件是 ~/.bashrc
例: 用“After completion”来替换 “Once I have completed it.”
shell程序运行的2种方法
运行shell程序有两种方法: 在shell环境下,将shell 程序文件作为子shell程序被调
用执行
$sh <shell程序文件名> [<参数1> <参数2> ……]
shell 变量大致可以分为三类:内部变量、用户变量和
环境变量。
内部变量:由系统提供,用户不能修改。
用户变量:由用户建立和修改,在 shell 脚本编写中
会经常用到。是在当前shell中使用的局部变量,不能被
在shell下运行的其他命令或其它shell程序使用 环境变量:这些变量决定了用户工作的环境,它们不
Shell 变量查询
查询当前 shell 中的环境变量:env
env
查询某个变量的值:echo
变量
变量命名
变量名必须以字母或下划线开头,后面可以跟字母、数字 或下划线。任何其它字符都标志变量名的结束。
~/.bash_profile ~/.bash_login ~/.profile 在这些文件中,用户可以定义自己的环境变量,而且能够 覆盖在 /etc/profile 中定义的设置。
bash 配置文件
bash 启动后,将读入配置文件 ~/.bashrc ,并执行这 个文件中的所有内容。
另外,还可以从另一个 shell 或者 bash 自身启动一个新 的 bash,这种过程称为非登录交互式,启动新 bash 的命 令为 bash,此时所读入的唯一 bash 配置文件是 ~/.bashrc
例: 用“After completion”来替换 “Once I have completed it.”
shell程序运行的2种方法
运行shell程序有两种方法: 在shell环境下,将shell 程序文件作为子shell程序被调
用执行
$sh <shell程序文件名> [<参数1> <参数2> ……]
shell 变量大致可以分为三类:内部变量、用户变量和
环境变量。
内部变量:由系统提供,用户不能修改。
用户变量:由用户建立和修改,在 shell 脚本编写中
会经常用到。是在当前shell中使用的局部变量,不能被
在shell下运行的其他命令或其它shell程序使用 环境变量:这些变量决定了用户工作的环境,它们不
Shell 变量查询
查询当前 shell 中的环境变量:env
env
查询某个变量的值:echo
Linux环境下程序开发基础 PPT课件
2020/3/30
7/34
GCC常用编译参数
• -Ldirname:将dirname所指出的目录加入到程序函数档 案库文件的目录列表中,是在连接过程中使用的参数。在 预设状态下,连接程序ld在系统的预设路径中(如/usr/lib) 寻找所需要的档案库文件,这个选项告诉连接程序,首先 到-L指定的目录中去寻找,然后到系统预设路径中寻找, 如果函数库存放在多个目录下,就需要依次使用这个选项, 给出相应的存放目录。
z 执行make gcc a.c b.c -o hello
产生一个叫hello的可执行程序
2020/3/30
11/34
书写makefile文件
• Makefile时由规则来组成的,每一条规则都有三部分组成: 目标(object),依赖(dependency)和命令(command).在上 面的例子中, Makefile只有一条规则,其目标为hello,期依 赖为a.c b.c,其命令为gcc a.c b.c -o hello.
.bash_profile 最优先 .bash_login其次 .profile 最后 (执行最先碰到 的一个,前面的设定会被后面的覆盖)
2020/3/30
19/34
LINUX中BASH环境变量的设定顺序
• 登入(login)交互式时(从字符终端或X Window登录)
1. 先执行 /etc/profile(包括/etc/profile.d/*.sh)
2. 接着bash会检查使用者的自家目录中,是否有 .bash_profile 或者 .bash_login或者 .profile,若有,则会执行其中一个,执行顺序为:
• 和Bash的环境设定有关的文件有 (1)/etc/profile (主要) /profile (主要) (3)$HOME/.bash_login (4)$HOME/.profile $HOME/.bash_logout (主要) (5)$HOME/.bashrc (主要) /etc/bashrc
4嵌入式Linux程序设计基础PPT课件
第4章 嵌入式Linux程序设计基础
1、GCC编译器 2、GDB调试器 3、Make命令和Makefile文件
28.07.2020
1
整体概况
概况一
点击此处输入 相关文本内容
01
概况二
点击此处输入 相关文本内容
02
概况三
点击此处输入 相关文本内容
03
2
本章要点
掌握GCC编译器的使用 掌握GDB调试器的使用 掌握Make命令和Makefile文件的编写
int main() {
printf(“Hello!!\n”); return 0;
}
/*my.h*/ #include<stdio.h>
[root@BC root]# gcc hello.c -I /root/test/ -o hello
28.07.2020
北林信息学院软件教研室
19
4.2 GDB调试器
GDB(GNU DeBugger)是GNU开发组织发布的一 个强大的Unix/Linux下的程序调试工具。它是一个 命令行的调试器
9
2、GCC的执行过程
使用gcc由C语言源代码文件生成可执行文件的过程要经历四 个相互关联的步骤∶
1、预处理(也称预编译,Preprocessing) ——对头文件(include)、预编译语句(如define等)进行分析,可 使用GCC的选项-E查看
2、编译(Compilation)
——将预处理后的文件转换成汇编语言,生成文件.s,可使用GCC 的选项-S查看
-o是指目标文件 .i文件为已经经过预处理的C原始程序
28.07.2020
北林信息学院软件教研室
14
2、编译阶段
1、GCC编译器 2、GDB调试器 3、Make命令和Makefile文件
28.07.2020
1
整体概况
概况一
点击此处输入 相关文本内容
01
概况二
点击此处输入 相关文本内容
02
概况三
点击此处输入 相关文本内容
03
2
本章要点
掌握GCC编译器的使用 掌握GDB调试器的使用 掌握Make命令和Makefile文件的编写
int main() {
printf(“Hello!!\n”); return 0;
}
/*my.h*/ #include<stdio.h>
[root@BC root]# gcc hello.c -I /root/test/ -o hello
28.07.2020
北林信息学院软件教研室
19
4.2 GDB调试器
GDB(GNU DeBugger)是GNU开发组织发布的一 个强大的Unix/Linux下的程序调试工具。它是一个 命令行的调试器
9
2、GCC的执行过程
使用gcc由C语言源代码文件生成可执行文件的过程要经历四 个相互关联的步骤∶
1、预处理(也称预编译,Preprocessing) ——对头文件(include)、预编译语句(如define等)进行分析,可 使用GCC的选项-E查看
2、编译(Compilation)
——将预处理后的文件转换成汇编语言,生成文件.s,可使用GCC 的选项-S查看
-o是指目标文件 .i文件为已经经过预处理的C原始程序
28.07.2020
北林信息学院软件教研室
14
2、编译阶段
Linux程序设计PPT课件
Linux各大发行版(续)
Slackware
Slackware由Patrick Volkerding创建于 1992年。算起来应当是历史最悠久的Linux 发行版。Slackware依然固执的追求最原始 的效率——所有的配置均还是要通过配置 文件来进行。 优点:非常稳定、安全,高度坚持UNIX的 规范 缺点:所有的配置均通过编辑文件来进行, 自动硬件检测能力较差
16
Linux发展历史(续)
2007年11月,Google宣布组建开放手机联盟(Open Handset Alliance)和发布Android,它被称为“第一个真正 开放的综合移动设备平台”。
2011年5月,Google I/O大会发布了Chrombook。这是一 款运行着所谓云操作系统Chrome OS的笔记本。Chome OS是基于Linux内核的。
优点:拥有数量庞大的用户,优秀的社区技 术支持,许多创新 缺点:免费版(Fedora Core)版本生命周期 太短,多媒体支持不佳
18
Linux各大发行版(续)
SUSE
SUSE是德国最著名的Linux发行版,在全 世界范围中也享有较高的声誉。SUSE自 主开发的软件包管理系统YaST也大受好评。 SUSE于2003年年末被Novell收购。 优点:专业,易用的YaST软件包管理系 统 缺点:FTP发布通常要比零售版晚1~3个 月
23
Linux各大发行版(续)
CentOS CentOS,也叫做社区企业操作系统,是企业Linux发 行版领头羊Red Hat Enterprise Linux的再编译版本。 RHEL是很多企业采用的Linux发行版本,但是如果 想得到RedHat的服务与技术支持,用户必须向Red Hat付费才可以。CentOS的开发者们使用Red Hat Linux的源代码创造了一个和RHEL近乎相同的Linux。 但是一切和RedHat有关的商标都被去除了。CentOS 是免费的,可以使用它像使用RHEL一样去构筑企业 级的Linux系统环境,但不需要向RedHat付任何的费 用。目前,CentOS的技术支持主要通过社区的官方 邮件列表、论坛和聊天室来提供。
第4章嵌入式Linux程序设计基础-PPT文档资料
GCC编译器
LOGO
• 使用GCC编译程序时,编译过程可以被细分为四个 阶段:
– – – – 预处理(Pre-Processing) 编译(Compiling) 汇编(Assembling) 链接(Linking)
GCC编译器 • gcc通过后缀来区别输入文件的类别:
– – – – – – – – – .c为后缀的文件: C语言源代码文件 .a为后缀的文件: 是由目标文件构成的库文件 .C,或.cxx 为后缀的文件: 是C++源代码文件 .h为后缀的文件: 头文件 .i 为后缀的文件: 是已经预处理过的C源代码文件 .ii为后缀的文件: 是已经预处理过的C++源代码文件 .o为后缀的文件: 是编译后的目标文件 .s为后缀的文件: 是汇编语言源代码文件 .S为后缀的文件: 是经过预编译的汇编语言源代码文件。
LOGO
LOGO
• 1. gcc optimize.c -o optimize time ./optimize • 2. gcc –O optimize.c -o optimize time ./optimize • 对比两次执行的输出结果不难看出,程序的性能的 确得到了很大幅度的改善
LOGO
• -static:静态链接库文件 • 例:gcc –static hello.c -o hello • 库有动态与静态两种,动态通常用.so为后缀,静 态用.a为后缀。例如:libhello.so libhello.a。当使 用静态库时,连接器找出程序所需的函数,然后 将它们拷贝到可执行文件,一旦连接成功,静态 程序库也就不再需要了。然而,对动态库而言, 就不是这样,动态库会在执行程序内留下一个标 记‘指明当程序执行时,首先必须载入这个库。 由于动态库节省空间,linux下进行连接的缺省操 作是首先连接动态库。 • 演示:静态链接与动态链接可执行文件大小比较
第3章linux程序设计基础精品PPT课件
3.3 Gdb调试器
应用程序的调试是开发过程中必不可少的环节 之一。Linux下GNU的调试器称之为GDB。
GDB调试的是可执行文件而不是源程序。 在用gdb调试之前,必须使用带有-g编译选项
的gcc命令来编译源程序。 gdb 所提供的一些功能:
监控程序中变量的值. 配置断点以使程序在指定的代码行上停止执行. 一行行的执行程序代码
:e 创建新文件
:n 加载新文件
:! command 执行shell命令
3.2 Linux下编译器
1、程序编译四个过程:
1)预处理—分析命令及语法 2)将预处理后的文件转换成汇编语言 3)由汇编变为目标代码(机器代码)生成.o的文件 4)连接目标代码,生成可执行程序
3.2 Linux下编译器
2、Gcc编译选项解析
3.3 Gdb调试器
Gdb命令语法: ➢ gdb [options] Gdb使用 ➢ gdb myprogram
3.3 Gdb调试器
3.3 Gdb调试器
3.3 Gdb调试器
3.3 Gdb调试器
Do you have any questions?
The end!
课件下载后可自由编辑,如有不m编辑器的使用
3.1 Vim编辑器的使用
2)查询命令
注:从文件头向文件尾为向前; 从文件尾向文件头为向后
/abc 向前查询abc
?abc 向后查询abc
n 向前继续查询
N 向后继续查询
3) 其他
:set nu 显示行号
:set nonu 取消显示行号
之处可根据本节内容进行提问
Thank you for coming and listening,you can ask questions according to this section and this courseware can be downloaded and edited freely
Linux开发基础相关知识简介PPT(88张)
命令模式
2、删除 x 删除光标所在字符 X 删除光标前面的字符 s 删除光标所在字符,并进入输入模式 S 删除光标所在的行,并进入输入模式 dd 删除光标所在的行 D 从光标位置开始删除到行尾 d与光标移动命令的组合
命令模式
3、修改 r 修改光标所在字符,r 后接着要修改的字符。如,rc 可以用字符“ c ” 替换光标所指向的当前字符 R 进入替换状态,新增内容会覆盖原先内容,直到按 [ESC] 回到命令 模式下为止 cc 修改光标所在行 C 修改从光标位置到该行末尾的内容 c 与光标移动命令的组合
命令模式
1、光标的移动 h 左移一个字符 l 右移一个字符 j 下移一行 k 上移一行 w,W 跳至后一个字的开头(W忽略标点) b,B 跳至前一个字的开头(B忽略标点) e 移动到后一个字的末尾 ^ 至本行第一个非空字符 $ 至行尾 0 至行首 H 移动到当前窗口的第一列 M 移动到当前窗口的中间列 L 移动到视窗的最后一列 ) 光标所在位置到下个句子的第一个字母 ( 光标所在位置到该句子的第一个字母 } 光标所在位置到该段落的最后一个字母 { 光标所在位置到该段落的第一个字母
文本编辑器vi
vi的模式 vi的进入 命令模式 插入模式 末行模式
vi的模式
Command Mode (命令模式) 这是执行vi后的缺省模式 此时键盘输入当作命令 命令有大小写之区分 Input Mode (插入模式) 使用 a、i、o、c、r、s 进入插入模式 用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏 幕上 按下 ESC 键即可回到 Command Mode
例如, 把file1.o和file2.o加入到my_library.a这个函数库文件: ar rcs my_library.a file1.o file2.o 然后运行 ranlib,以给库加入一些索引信息
LINUX程序的设计PPT文档22页
静态库,也称作归档文件(archive),按惯例, 它们的文件名都以.a结尾。例:
标准C语言函数库/usr/lib/libc.a X11函数库/usr/lib/libX11.a
P9实验
淘宝才智专线 shop101162374.taobao/
16
静态库
静态库的缺点:当你同时运行许多应用程序并 且它们都使用来自同一个函数库的函数时,内 存中就会有同一函数的多份副本,而且在程序 文件自身中也有多份同样的副本。这将浪费大 量的内存和磁盘空间。
应用程序 头文件 库文件
淘宝才智专线 shop101162374.taobao/
11
1. 应用程序
系统为正常使用提供的程序,包括用于程序开 发的工具,都可在/usr/bin中找到;
系统管理员为某个特定的主机或本地网络添加 的程序通常可在目录/usr/local/bin或/opt中找 到。
以上命令也可写成:
$ gcc –o fred fred.c -lm 其中的-lm是简写方式,它代表的是标准库目 录(/usr/lib)中名为libm.a的函数库。 -lm标志的另一个好处是,如果有共享库,编 译器会自动选择共享库。
淘宝才智专线 shop101162374.taobao/
15
静态库
当登录进Linux时,用户与一个shell程序(通 常是bash)进行交互,它在一组指定的目录路 径下按照用户给出的程序名搜索与之同名的文 件。搜索的目录路径存储在shell变量PATH里。
PATH变量的例子:
/usr/local/bin : /bin : /usr/bin: . : /home/neil/bin 用冒号分隔PATH变量里的条目
通过这种方法,系统可以只保留共享库的一份 副本供许多应用程序同时使用,并且在磁盘上 也仅保存一份。
标准C语言函数库/usr/lib/libc.a X11函数库/usr/lib/libX11.a
P9实验
淘宝才智专线 shop101162374.taobao/
16
静态库
静态库的缺点:当你同时运行许多应用程序并 且它们都使用来自同一个函数库的函数时,内 存中就会有同一函数的多份副本,而且在程序 文件自身中也有多份同样的副本。这将浪费大 量的内存和磁盘空间。
应用程序 头文件 库文件
淘宝才智专线 shop101162374.taobao/
11
1. 应用程序
系统为正常使用提供的程序,包括用于程序开 发的工具,都可在/usr/bin中找到;
系统管理员为某个特定的主机或本地网络添加 的程序通常可在目录/usr/local/bin或/opt中找 到。
以上命令也可写成:
$ gcc –o fred fred.c -lm 其中的-lm是简写方式,它代表的是标准库目 录(/usr/lib)中名为libm.a的函数库。 -lm标志的另一个好处是,如果有共享库,编 译器会自动选择共享库。
淘宝才智专线 shop101162374.taobao/
15
静态库
当登录进Linux时,用户与一个shell程序(通 常是bash)进行交互,它在一组指定的目录路 径下按照用户给出的程序名搜索与之同名的文 件。搜索的目录路径存储在shell变量PATH里。
PATH变量的例子:
/usr/local/bin : /bin : /usr/bin: . : /home/neil/bin 用冒号分隔PATH变量里的条目
通过这种方法,系统可以只保留共享库的一份 副本供许多应用程序同时使用,并且在磁盘上 也仅保存一份。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.c c语言源文件
.h c语言头文件
.i 已经预处理的源文件 .o 编译后的目标文件
.s 汇编语言源代码文件
Gcc编译过程 :
.o目标文件
源 程 序 预处理
汇编
组译
链接
(*.c)
可执行文件 ELF格式
预处理器 汇编器 组译器 连接器
gcc的使用格式如下:
gcc [options] [filenames]
C语言的应用
进行底层的开发:
如内核开发及基于linux的嵌入 式开发。
进行顶层的开发:
如linux下的应用程序的开发
-
2.1 Linux下 c 程序开发
一个完整的开发工具应该包括: 编辑工具:vi编辑器
集成开发 环境IDE
Kylix Kdevelop RHIDE
编译工具:gcc 调试工具: gdb
进入命令状态
3)末行模式:
在该模式下,vi编辑器实现文件的保存和退出。
命令
:q :q! :w :w! :wq / :x :x! :w File :w! File :r File
功能
(Quit)退出没有被修改的文件 (若文件被修改了而没有保存,则此命令无效)
强制退出,且不保存修改过的部分 (Write)保存文件,但不退出
gcc –o test.o –c test.c gcc –c test.c gcc –c test.c -o test.o 仅把源代码编译为目标代码而跳过连接,优点:
当编译多个c程序时速度更快,易于管理。
gcc –WALL –o test test1.c test2.c test3.c 有多个源文件生成 test,不产生警告信息
(Undo)取消上一次操作(即恢复功能)
2)插入模式:
在该模式下,vi编辑器进入编辑状态: 状态命令
命令
a i o ESC
功能
(Append)进入编辑状态,从当前光标之前的位置开始插入 键盘输入的字符 (Insert)进入编辑状态,从当前光标之后的位置开始插入 键盘输入的字符 (Open)进入编辑状态,并插入一新行,光标移到该新行的 行首,以后键盘输入的字符将插入到光标位置
vi编辑器有三种工作模式:
编辑 hello.c
命令行模式 插入模式 底行模式
1)命令行模式:
用户在用vi编辑文件时,最初进入的一般模式, 此时键盘输入当做命令。在该模式中可以进行光 标移动、删除、复制、粘贴等操作,但是无法编 辑文字。
光标命令
命令 h j k l :N 1G G
功能
方向键,向左移动光标一个字符的位置,相当于键“←” 方向键,向下移动光标到下一行的位置,相当于键“↓” 方向键,向上移动光标到上一行的位置,相当于键“↑” 方向键,向右移动光标一个字符的位置,相当于键“→” 移动光标到第N行(N待定) 移动光标到文件的第1行 移动光标到文件的最后1行
当使用gcc时,gcc会完成预处理、编译、汇编和 连接。前三步生成目标文件,连接时,把生成的目 标文件链接成可执行文件。gcc可以针对支持不同的 源程序文件进行不同处理,文件格式以文件的后缀 来识别。
gcc -o 目标文件名 源文件名(.c形式的文件) 如 gcc –o hello hello.c
./可执行文件名 进行执行文件
gcc –g –o hello hello.c 编译生成可执行连接文件hello同时生成供调试
的信息。
使用优化选项
当用gcc编译C代码时,它会试着用最少的时间 完成编译并且使编译后的代码易于调试. 易于调试意 味着编译后的代码与源代码有同样的执行次序,编 译后的代码没有经过优化。有很多选项可用于告诉 gcc,在耗费更多编译时间和牺牲易调试性的基础上, 产生更小更快的可执行文件。这些选项中最典型的 是-O和-O2选项。
大多数Linux软件是经过自由软件基金会提供 的GNU公开认证授权的,因而通常被称作GNU软件。 GNU软件免费提供给用户使用,并被证明是非常可 靠和高效的。
Linux 程序设计基础
1、Linux下c程序开发 2、Linux下的 shell 编程
Linux下的C语言
C语言是一门“中级语言”,是汇编语言和高 级语言过渡的一种语言,但是它既具有高级语言简 单易懂、灵活方便的特点,同时,他又具有汇编语 言的执行高效和可对硬件直接操作的特点。
-O选项告诉gcc对源代码进行基本优化。这些优 化在大多数情况下都会使程序执行的更快。
Linux 安装时 完成了这些
函数库及系统头文件:
配置、项目管理工具
Linux下 c 程序的开发过程:
➢使用vi等编辑工具编写源程序 ➢保存为*.c ➢使用gcc编译成二进制可执行文件 ➢./文件名 执行 ➢有问题可以用gdb进行调试
一、编辑工具:
在Linux下编程,你不再拥有集成化环境,你可 以使用类似于记事本的工具---经典的vi来编辑源程序。 当然,还有更高档一些的,如joe、emacs等。总之, 编辑程序与编译工作是分开的。
强制保存文件,但不退出 (Exit)保存文件并退出
强制保存文件并退出 另存为File给出的文件名,不退出 强制另存为File给出的文件名,不退出 (Read)读入File指定的文件内容插入到光标位置
2、编译工具:gcc
gcc –v 查询gcc的版本号
Байду номын сангаас
gcc是gnu推出的功能强大性能优越的多平台 编译器,gcc能将c、c++、Fottran等语言源文件进 行编译、连接生成可执行文件。gcc支持下面后缀 名的文件:
第二章 Linux 程序设计基础
本章学习目标
通过对本章的学习,读者应该掌握以下主要内容:
Linux编程风格 Linux下使用GNU cc开发应用程序 Linux程序的调试
1.概述
1.1 Linux应用软件开发:
Linux开发具有活跃的开发环境,Linux开发工 作一般是由多个Linux用户共同完成一个项目的。开 发工作完成后,该软件就被放到Internet站点上,任 何用户都可以访问和下载它。
编辑命令
命令
[N]x [N]dd [N]yy
p u
功能
(Expurgate)删除从光标位置开始的连续N个字符(并复制 到编辑缓冲区) (Delete)删除从光标位置开始的连续N行(并复制到编辑 缓冲区) (Yank)复制从光标位置开始的连续N行到编辑缓冲区
(Put)从编辑缓冲区复制文本到当前光标位置(即粘贴)