前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux常见工具如yum、vim、gcc、gdb的基本使用,以及编译过程和动静态链接的区别

Linux常见工具如yum、vim、gcc、gdb的基本使用,以及编译过程和动静态链接的区别

作者头像
再睡一下就好
发布2025-06-11 08:59:06
发布2025-06-11 08:59:06
1050
举报
文章被收录于专栏:深究算法深究算法

一、工具的本质

工具在本质上也是一种特殊的指令

二、一些常用的工具

1.yum

常用选项: yum list | grep 软件名:搜安指定软件;

yum install 软件名:安装指定软件;

yum remove 软件名:卸载指定软件

提示:yum需要root权限,故一般处于root身份或者sudo安装

示例:安装sl小火车

①sudo yum install -y sl或则root身份下的yun install -y sl(-y即不要过多询问直接安装)

②sl(运行该软件)

如果安装成功,屏幕中会出现如下小火车。

不知道是普通用户还是root?可用whoami指令查看

2.vim

介绍:Linux下的一款功能强大的编辑器(功能很多的记事本……)

使用方法:vim 先打开的文件名

1)vim的三种基本模式:

①命令模式:默认打开vim进入后所处的模式;

注意:在vim中的操作须在输入法为英语环境下进行。

②底行模式:在命令模式下,按住shift + :即可进入底行模式

注意光标在哪

在底行模式输入q再Enter可退出vim。

③插入模式:在命令模式下按键盘上的i键进入,进入后屏幕左下角会显示“--INSERT--”字样

在插入模式输入内容后,保存须在底行模式输入w再Enter

三种模式的切换:

命令模式+i==插入模式,插入模式按esc(键盘左上角)可退回命令模式;

命令模式+shit+:是底行模式,底行模式按esc(键盘左上角)可退回命令模式;

插入模式不能直接切换到底行模式,反之亦然,需要命令模式做中介。

画的好丑,读者见谅

在底行模式输入!q再Enter可退出vim。

2)vim的基本操作
①命令模式下的基本操作:

光标定位:

文本编辑:

撤销:u

撤销撤销:ctrl + r

②插入模式:

按期望编写文件即可

③底行模式:

3)vim的配置:让他变得更好用

3.gcc/g++的使用

若系统未安装gcc或者g++先安装:sudo yum install -y gcc或sudo yum install -y g++

基本使用方法:

单文件编译方式:

gcc hello.c -o hello # 编译 hello.c,生成可执行文件 hello ./hello # 运行程序

多文件编译方式:

gcc main.c hello.c -o myproc # 编译并链接 main.c 和 hello.c

注意:

①若有多个源文件则在gcc/g++后跟着列出即可,中间空格‘ ’隔开;

②-o:是为生成的可执行文件命名,若无-o则默认生成a.out

gcc选项

-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面

-S 编译到汇编语言不进行汇编和链接

-c 编译到目标代码

-o 文件输出到 文件

编译过程

从源文件到可执行文件经过了如下几个步骤:

①预处理:头文件展开,宏定义替换,去注释,条件编译;

②编译:将源文件编译为汇编语言

③汇编:将②中汇编语言进一步翻译为二进制机器语言;

此时的二进制文件可以被机器执行吗?

答:不能,在我们的代码中只有函数的调用,如pringf、scanf等,没有他们的实现!!他们的实现在C标准库,还需要第五步链接!

④链接:将③中的二进制代码与库中代码合并链接最后形成可执行程序。

什么库?干嘛的?比如printf这个函数,我们在编写代码时只是调用了他,却并没有实现,他的实现在C标准库中,即头文件"stdio.h"

动静态链接

在编译过程中的第五步链接又分为动态链接和静态链接:

如上述生成的hello可执行程序,若用file指令:file hello,在弹出的信息中可看到Linux系统采用了动态链接方式(大多数系统都是默认动态链接

4.gdb命令行调试

首先应该明确的是:在不同的开发环境调试的方式是不同的,但调试的思路一定是一样的。

1)gdb的安装:sudo yum install -y gdb

2)在Linux中gcc/g++默认生成的是release版本,若想调试应该在编译时带上-g,如:

这里插个题外话:为什么会有release和debug之分?

3)调试指令

5.初识M/makefile

拿上述的hello程序写一个最简单的makefile(在vim中编写):

补充:系统是如何得知源文件是否未被修改的?文件属性——三个时间

使用stat指令:stat hello可查看hello的详细信息

其中有三个时间:

所以系统是如何得知源文件是否未被修改的呢?


总结

本篇文章主要介绍了yum、vim、gcc/g++以及gbd的基本使用方法,同时补充了程序的编译过程和动静态链接过程。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、工具的本质
  • 二、一些常用的工具
    • 1.yum
    • 2.vim
      • 1)vim的三种基本模式:
      • 2)vim的基本操作
      • 3)vim的配置:让他变得更好用
    • 3.gcc/g++的使用
      • 基本使用方法:
      • gcc选项
    • 编译过程
    • 动静态链接
    • 4.gdb命令行调试
      • 3)调试指令
    • 5.初识M/makefile
      • 补充:系统是如何得知源文件是否未被修改的?文件属性——三个时间
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档