【Linux】环境基础开发工具使用 - 软件包管理yum _vim _gcc/g++ _gdb

快速导航

1.Linux软件包管理yum

1.1 什么是软件包

1.2 注意事项

1.3 查看软件包

1.4 如何安装软件

1.5 如何卸载软件

2.Linux编辑器 -vim的使用

2.1 vim的基本概念

2.2 vim的基本操作

2.3 vim命令模式常见命令

2.4 vim底行模式常见命令

2.5 简单vim配置

2.6.1 配置文件的位置

2.6.2 常用配置选项

3.Linux编译器 -gcc/g++的使用

3.1 背景知识

3.2 gcc如何完成

3.2.1 预处理

3.2.2 编译

3.2.3 汇编

3.2.4 链接 

3.3 函数库

3.3.1 静态库

3.3.2 动态库

4.Linux调试器-gdb使用

4.1 背景

4.2 如何使用?

开始使用(以myproc为例)

1.Linux软件包管理yum

1.1 什么是软件包

软件包是由一个基本配置和若干可选部件构成,既可以是源代码形式,也可以是目标码形式。用户手册和指南等文档是软件包的重要组成部分。此外,软件包的维护及技术支持也是非常必要的。有些人把一些常用的软件提前编译好,做成软件包放在一个服务器上,通过包管理器可以很方便的获取这个编译好的软件包,直接进行安装。

1.2 注意事项

关于yum的所有操作必须保证主机(虚拟机)网络畅通!可以通过ping指令验证。

ping www.baidu.com

  

1.3 查看软件包

通过yum list命令可以罗列出当前有哪些软件包,由于包的数目可能非常多,这里我们使用grep命令筛选出我们关注的包,例如:

yum list | grep lrzsz
lrzsz.x86_64 0.12.20-36.el7 @base

注意事项:

  •  软件包名称:主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  • "x86_64"后缀表示64位系统的安装包," i686"后缀表示32位系统安装包,选择包时要和系统匹配.
  • " el7 "表示操作系统发行版的版本," el7 "表示的是centos7/redhat7. " el6 "表示centos6/redhat6.
  • 最后一列base表示“软件源”的名称

1.4 如何安装软件

可以通过很简单的一条命令完成gcc的安装。

sudo yum install gcc

yum会自动找到都有哪些软件包需要下载,这时候敲" y "确认安装。出现complete说明安装成功。 

注意事项:

  • 安装软件时由于需要向系统目录中写入内容,一般需要sudo或者切换到root 账户下才能完成
  • yum安装软件只能一个装完了再装另一个,正在yum安装一个软件的过程中,如果再尝试用yum安装另一个软件,yum会报错

1.5 如何卸载软件

举例:gcc的卸载

sudo yum remove gcc

2.Linux编辑器 -vim的使用

2.1 vim的基本概念

Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。

vim有三种模式:命令模式、底行模式、插入模式。

  •  命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段; 进入底行模式,或者进入插入模式。
  • 底行模式:文件保存和退出,也可以进行文件替换,找字符串,列出行号等操作;在命令模式下,shift+;(:)即可进入该模式,要查看所有模式,打开vim,底行模式下输入 :help vim-modes。
  • 插入模式:只有在插入模式下,才能做文字的输入,按[ ESC ]键可以回到命令模式,该模式在编辑中使用的最为频繁。

2.2 vim的基本操作

  • 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面: $ vim test.c ;需要注意的是,进入vim之后处于命令模式,切换到插入模式才能输入文字。

  •  命令模式切换至插入模式:输入:I love linux。

  •  插入模式切换至正常模式,处于插入模式能一直输入文字,如果发现输入了错别字,想要光标键往回移动,将该错别字删除,可以先按一下[ ESC]键回到命令模式再使用x删除文字;当然也可以直接删除。
  • 正常模式切换至底行模式:[ shift + ;],其实就是输入[ : ]
  • 退出vim及保存文件,在命令模式下,按一下[ : ]进入底行模式。: w(保存当前文件)、: wq(保存并退出,不加w的效果是相同的)、: q!(不保存,强制退出vim)

2.3 vim命令模式常见命令

  • yy:复制当前光标所在行
  • p:将复制行进行粘贴
  • dd:将当前光标所在的行剪切(删除)

以上指令可以配合nyy,np,ndd使用,代表复制、粘贴、删除n行。

  •  u:撤销操作
  • ctrl + r:撤销u操作
  • shift + g:光标定位到文件的结尾
  • gg:光标定位到文件的最开始
  • n + shift + g:光标定位到文件的第n行
  • shift + 6(^):将光标定位到当前行的最开始
  • shift + 4($):将光标定位到当前行的末尾
  • w, b:以单词为单位进行光标的前后移动
  • h, j, k, l:进行左,下,上,右移动
  • shift + ~:大小写切换
  • shift + r:进入替换模式
  • r:替换光标所在行的字符,支持nr
  • x or X:删除光标所在的字符,支持nx

2.4 vim底行模式常见命令

  • set no/nonu:打开行号,或者取消行号
  • vs 文件名:分屏操作
  • w:写入,w!
  • q:退出, q!
  • :!cmd:不退出vim执行对应的命令(常用的是使用man查看函数)等

2.5 简单vim配置

2.6.1 配置文件的位置

  • 在目录/etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有的用户都有效
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为" .vimrc "。在/root目录下,通常已经存在一个 .vimrc的文件,若不存在,则创建
  • 切换用于称为自己执行su,进入自己的主工作目录,cd ~

  • 打开自己目录下的 .vimrc文件,执行vim .vimrc

2.6.2 常用配置选项

  • 设置语法高亮:syntax on
  • 显示行号:set nu
  • 设置缩进的空格数4:set shiftwidth=4

3.Linux编译器 -gcc/g++的使用

3.1 背景知识

3.2 gcc如何完成

gcc  [选项]  要编译的文件 [选项]  [目标文件]

下面创建一个test.c文件,使用C语言写一个" hello Linux "。 

#include <stdio.h>
int main()
{
    printf("hello Linux\n");
    return 0;
}

3.2.1 预处理

[zwx@VM-20-3-centos test1]$ gcc -E test.c -o test.i
[zwx@VM-20-3-centos test1]$ ls
myproc  test.c  test.i
  • 预处理指令是以#号开头的,如#include ,#define 等
  • 实例:gcc -E test.c -o test.i
  • 选项" -E ",该选项的作用是让gcc在预处理结束后停止编译过程
  • 选项" -o "是值目标文件," .i"文件为已经过预处理的C程序

3.2.2 编译

[zwx@VM-20-3-centos test1]$ gcc -S test.i -o test.s
[zwx@VM-20-3-centos test1]$ ls
myproc  test.c  test.i  test.s
  • 这个阶段gcc会检查代码的规范性、是否有语法错误等,以确定代码实际要做的工作,在检查无误后,gcc会把代码翻译成汇编语言
  • " -S"选项,该选项的作用是让gcc在编译后停止汇编过程

3.2.3 汇编

[zwx@VM-20-3-centos test1]$ gcc -c test.s -o test.o
[zwx@VM-20-3-centos test1]$ ls
myproc  test.c  test.i  test.o  test.s
  •  汇编阶段是把编译阶段生成的" .s "文件转成目标文件
  • 使用选项" -c "可以看到汇编代码生成" -o "的二进制目标文件

3.2.4 链接 

  • 编译阶段完成之后,进入链接阶段

test就是一个可执行的.exe文件,使用指令" ./test "可以执行程序。 

[zwx@VM-20-3-centos test1]$ ./test
hello linux

3.3 函数库

  • C程序中,并没有定义printf的函数实现,而且在预处理中包含的" stdio.h "中也只有该函数的声明,而没有定义函数的实现,那么,printf函数是在哪里实现的呢?
  • 答案是:系统把这些函数实现都放到了库文件中去了,在没有特别指定时,gcc会到系统默认的搜索路径" usr/lib "下进行查找,也就是链接到库函数中去,这样就能使用printf函数了,这也是链接的作用。

3.3.1 静态库

静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码代码,复制到生成的可执行文件中的这种库。

静态库特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。

3.3.2 动态库

动态库在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。

动态库一般后缀名为“.so”,如 libc.so.6就是动态库。gcc 在编译时默认使用动态库。

注意:使用动态库链接时,函数的实现和函数调用没有在一个文件中,无法进行调试。

4.Linux调试器-gdb使用

4.1 背景

  • 程序发布有两种方式,debug和release模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项

4.2 如何使用?

准备工作:myproc.c,求1-100的整数之和。

#include <stdio.h>


int addToSum(int from, int to)
{
    int sum = 0;

    for(int i = from; i <=  to; i++)
    {
        sum += i;
    }
    return sum;
}
int main()
{
    int res = addToSum(1,100);
    printf("%d\n", res);
    return 0;
}

下面编译文件,形成可执行程序:

gcc myproc.c -o myproc -g -std=c99 

注意:一定要加上-g选项,否则生成的relese版本无法调试。

开始使用(以myproc为例)

生成可执行程序myproc之后,使用 gdb myproc 开始调试:

下面来介绍一些常用的gdb调试指令:

l 行号:显示源代码,接着上次的位置往下列,每次列10行。
r:运行程序。
n:单条执行(逐过程)。
s:单条执行(逐语句),遇到函数会进入函数。
b 行号:在某一行设置断点。
info break :查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
 p 变量:打印变量值。
c:从当前断点跳至下一个断点。
delete 断定编号:删除断点
disable/enable 断点编号:关闭/打开断点。
info b:查看断点。
display/undisplay 变量名:设置/取消长显示。
until 行号:跳至指定行
bt:查看调用堆栈。
quit:退出gdb。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

new出新对象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值