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的基本使用方法,同时补充了程序的编译过程和动静态链接过程。笔者水平较浅薄,难免有疏忽大意的地方,若有错误还请读者指出!!

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

相关推荐
秋风起,再归来~5 分钟前
【Linux庖丁解牛】—进程优先级!
linux·运维·服务器
Invinciblenuonuo11 分钟前
FreeRTOS学习笔记【10】-----任务上下文切换
笔记·学习
cosX+sinY24 分钟前
ubuntu 20.04 编译运行lio-sam,并保存为pcd
linux·ubuntu·机器人
OpenC++26 分钟前
【C++QT】Buttons 按钮控件详解
c++·经验分享·qt·leetcode·microsoft
美味的大香蕉29 分钟前
Spark-SQL与Hive
笔记
_Hello_Panda_34 分钟前
FX10(CYUSB4014)USB3.2(10Gbps)开发笔记分享(1):硬件设计与开发环境搭建
笔记·fpga开发·fx10·cyusb4014
杜小暑1 小时前
动态内存管理
c语言·开发语言·动态内存管理
YuforiaCode1 小时前
第十二届蓝桥杯 2021 C/C++组 直线
c语言·c++·蓝桥杯
Lary_Rock1 小时前
Android 编译问题 prebuilts/clang/host/linux-x86
android·linux·运维
熬夜学编程的小王1 小时前
【Linux篇】理解信号:如何通过信号让程序听从操作系统的指令
linux·信号产生·软件条件产生信号