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

目录

一、工具的本质

二、一些常用的工具

1.yum

2.vim

1)vim的三种基本模式:

2)vim的基本操作

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

②插入模式:

③底行模式:

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

3.gcc/g++的使用

基本使用方法:

编译过程

动静态链接

4.gdb命令行调试

3)调试指令

​编辑

5.初识M/makefile

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

总结



一、工具的本质

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

二、一些常用的工具

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 源文件 -o 可执行文件名;g++ 源文件 -o 可执行文件名。

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

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

编译过程

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

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

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

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

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

答:不能,在我们的代码中只有函数的调用,如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的基本使用方法,同时补充了程序的编译过程和动静态链接过程。笔者水平较浅薄,难免有疏忽大意的地方,若有错误还请读者指出!!

文章读完可否给笔者一个免费的赞呢,一个免费的点赞就能让笔者高兴很久哦。

相关推荐
2301_764441335 小时前
Aella Science Dataset Explorer 部署教程笔记
笔记·python·全文检索
神仙别闹6 小时前
基于QT(C++)实现学本科教务系统(URP系统)
数据库·c++·qt
派大鑫wink6 小时前
【Java 学习日记】开篇:以日记为舟,渡 Java 进阶之海
java·笔记·程序人生·学习方法
deng-c-f6 小时前
Linux C/C++ 学习日记(49):线程池
c++·学习·线程池
南棱笑笑生7 小时前
20251217给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-5.10】后调通ov5645【只能预览】
linux·c语言·开发语言·rockchip
ulias2127 小时前
C++ 的容器适配器——从stack/queue看
开发语言·c++
daidaidaiyu7 小时前
FFmpeg 关键的结构体
c++·ffmpeg
永远都不秃头的程序员(互关)7 小时前
大模型Agent落地实战:从核心原理到工业级任务规划器开发
笔记
欧特克_Glodon7 小时前
C++医学图像处理经典ITK库用法详解<一>:图像输入输出模块功能
c++·图像处理·itk
aduzhe8 小时前
int32 - int32MAX 出现异常
c语言·stm32