Linux 新手救命指南!软件安装 + vim 操作 + gcc 编译,一篇搞定基础工具链----《Hello Linux!》(4)
文章目录
前言
刚上手 Linux 时,你是不是也陷入过这些 “手足无措” 的瞬间?想装个软件,分不清该用源码编译还是 yum,搜教程越看越乱;用 vim 打开文件,半天找不到 “退出” 按钮,只能强行关窗口;用 gcc 编译代码,只知道生成 a.out,遇到 “链接错误” 就慌了神;别人说 “动态链接省空间”,你却连 “动态库和静态库有啥区别” 都搞不清……
其实 Linux 基础工具的核心逻辑一点都不复杂 —— 难的是没人把 “软件安装→文件传输→代码编辑→编译链接” 这一套流程串起来,讲清每个步骤的 “为什么” 和 “避坑点”。
这篇文章就是给新手的 “保姆级工具手册”:从软件安装的 3 种方式(yum 最省心、rpm 需手动、源码要编译)讲起,教你用 rz/sz 传文件(附 lrzsz 安装方法);再拆透 vim 的 3 大模式(命令 / 插入 / 底行)和必背快捷键(批量注释、光标跳转、撤销恢复);最后带你走通 gcc 编译的 4 个步骤(预处理→编译→汇编→链接),搞懂动静态链接的区别(为什么静态链接程序大却不依赖库)。
每个操作都附具体命令(比如 yum install -y lrzsz、gcc text.c -o text),每个易踩的坑都标红提醒(比如 vim 模式不能直接切换、yum 要联网、静态库需单独装)。不管你是刚学 Linux 的学生,还是需要用 Linux 做开发的新人,跟着走一遍,就能摆脱 “遇事就搜” 的困境,把基础工具用得顺手又扎实。
Linux安装软件的几种方法
Linux安装软件的几种方法:
1.源代码安装 2.rpm安装 3.yum安装-这个就相当于windows的应用商城(自己一般用这个)
rz和sz指令
rz:从本地上传文件到远程 Linux 服务器(拖拽方式)sz:从远程 Linux 服务器下载文件到本地计算机
这俩的使用前提:Linux要安装lrzsz
yum指令
在使用yum时要保证虚拟机网络畅通
看yum能安装啥软件:yum list通常用管道去筛选自己需要的包
“x86_64” 后缀表示64位系统的安装包
0.12.20-36表示软件的版本
“el7” 表示操作系统发行版的版本 --centos7
, base 表示的是 “软件源” 的名称 --比如:华为应用商店
yum下载和卸载软件
下载的话用yum install [-y] 要下载的东西eg:lrzsz.x86_64
-y的话就不会再次问你要不要下载了
卸载的话是yum remove [-y] 要卸载的东西注意:1.yum安装软件只能一个装完了再装另一个,但是卸载可以同时卸载
2.yum要root权限或者sudo放权才行
引申:1.ls /etc/yum.repos.d/可以看yum有啥下载链接
2.扩展yum源的安装yum install -y epel-release
yum源的概念:一个存放各种软件包的 “仓库”
引申:一般Linux操作系统,默认配置的yum源是国外的,访问会比较慢–如果是虚拟机的话,需要自己替换成国内的yum源,但是服务器的话,一般厂商会替换好了的
vim指令
Vim是个多模式的编译器
输入vim 文件名后就会就进入vim全屏幕编辑画面
这里的文件如果不存在的话,vim会创建一个空的出来用,但是如果出去都没保存的话,最后会连空文件都没有

上面是各个模式间的切换方法(命令模式又叫正常模式)
注意:插入模式和底行模式间不能直接切换
第四种模式:shift+R:替换模式,对内容进行整体替换
(就是直接在原有的上面写,原有的直接没了)
Vim进行多文件操作的方法:
在底行模式输入vs 文件名,能把那个文件也打开(规则跟vim打开的那个一样)
然后ctrl+ww可以进行窗口光标的切换
光标显示在哪个窗口,进行的操作就是对哪个窗口的
Vim三个模式下的一些键位的功能
命令模式:
底行模式:
w:保存文件 q:退出文件(注意是q不是p)
wq:保存并退出文件(连着输! 在页面显示的是:wq)
后面加!(w! q! wq!)的话就是强制…
引申:Linux删除的话是删除的光标前一个的东西
想对代码进行批量注释:
1.命令模式下ctrl+v,然后HJKL来选中区域(一行选中两个字符长度就行了)
2.再用shift+i切到插入模式,输入//,再切到命令模式就行了
取消批量化注释:
1.命令模式下ctrl+v,然后HJKL来选中区域(把//选中)
2.输入d就行了
Vim的配置
在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:.vimrc。比如:/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。比如:touch .vimrc
但是,建议一个用户一个vim配置文件,这样不会相互影响,还有就是不要给root做配置,很麻烦
常用的配置选项:自己还想要其他的话,就上网搜(写在.vimrc里面!)
设置语法高亮: syntax on
显示行号: set nu
设置缩进的空格数为4: set shiftwidth=4
自己比较推荐的话是gitee上HGtz2222大佬的配置
他的配置下的这个install.sh不建议删除,隐藏起来就行了Linux编译器-gcc/g++使用
gcc是针对于C语言的g++是C++和C都可以用,但是C一般用gcc的用法是相同的,下面就拿
gcc和g++gcc举例了
但是:C/C++开发环境不仅仅指的是vs,gcc、g++,更重要的是,语言本身的头文件和库文件
背景知识
一份代码成为一个可执行程序需要经历的步骤
1.预处理
2.编译(生成汇编)
3.汇编(生成机器可识别代码)
4.链接(生成可执行文件或库文件)
预处理里面要进行:
1.去注释 2.头文件展开 3.条件编译 4.宏替换
条件编译的作用举例:根据不同的编译条件,进行功能的裁剪啥的
用法
gcc的格式:gcc [选项] 要编译的文件 [选项 目标文件] [-g] [-static]
加上-static之后所有的链接都会变成静态链接
在后面还能加eg:-std=c98
默认是用release方式发布的,加了-g就是debug版本了
想一步到位的话就: eg:gcc text.c -o text(不要记其他乱七八糟的写法)
如果没有要求目标文件的文件名的话,默认是叫a.out
这个可执行程序的运行:eg:./a.out
引申:也就是如果要执行程序,则需要写出程序的相对路径或绝对路径
预处理:
到编译结束:
到汇编结束:引申:这里的text.o文件叫做可重定位二进制文件,简称目标文件,(也就是.obj文件)
这个文件不能独立执行,需要经过连接才能执行
有可执行权限和有可执行能力是两码事!
到链接结束:(将目标文件和库进行连接形成可执行程序)
引申:1.-o是 gcc 的一个选项,作用是 指定输出文件的名称
gcc的选项还有比如:-g:生成带有调试信息的可执行文件动态链接和静态链接
.o文件通过动态链接和动态库相连,连接完之后对应的动态库不能缺失,不然会出问题
(通过动态链接跳转到动态库中去执行,执行完再返回代码调用处)
编译器在对.o文件使用静态库进行静态链接时,会将库的方法拷贝到目标程序中,这个程序以后就不用依赖静态库了
在Linux中,编译形成可执行程序,默认采用的就是动态链接
如果想要按照静态链接的方式,需要添加-static选项
引申:一个可执行程序里面不一定是全部动态链接或者全部静态链接
动态库(也叫共享库)和静态库
库的概念:就是把源文件(.c文件)经过一定的翻译,然后打包–只给别人库文件可以达到隐藏源文件的目的(库本质就是一个文件)
库有自己的命名规则:eg:libname.so.xxx
name那个位置的才是库的名字,xxx那个位置是其版本号,lib是Linux库文件名的固定前缀,so表示是动态库
Linux下,.so是动态库,.a是静态库
一般系统默认会把动态库安装好,静态库不会
安装静态库的方法:yum install -y glibc-static --C的静态库如果没有静态库,但是用了-static,是不行的
如果没有动态库,只有静态库,用默认方式–是可以的
(因为gcc只是默认优先动态链接而已)
动态库vs静态库
动态库是共享库,优点:可以有效的节省资源(比如:磁盘空间,内存空间,网络空间)
静态库:优点:不依赖库,程序可以独立运行
debug版本和release版本
debug版本可以被追踪调试 release版本不可以,但是快
而且debug版本形成可执行程序的时候添加了debug信息,体积会大些
扩展:
可执行程序形成的时候,不是无序的二进制构成,是由自己的格式的(ELF格式)