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 服务器(拖拽方式)但是rz一般用的 rz -E这样进行转义字符处理
sz:从远程 Linux 服务器下载文件到本地计算机这俩的使用前提:Linux要安装
lrzsz
yum指令
在使用
yum时要保证虚拟机网络畅通可以用这个命令检验下:ping www.baidu.com 如果持续收到 64 bytes from... 这类回复,说明网络能连通到目标服务器 但是自己买的那种服务器一般没问题
看yum能安装啥软件:
yum list通常用管道去筛选自己需要的包eg: yum list | grep lrzsz
“x86_64” 后缀表示64位系统的安装包
0.12.20-36表示软件的版本
“el7” 表示操作系统发行版的版本 --centos7
, base 表示的是 “软件源” 的名称 --比如:华为应用商店
yum下载和卸载软件
下载的话用
yum install [-y] 要下载的东西eg:lrzsz.x86_64-y的话就不会再次问你要不要下载了
当然 输 yum install -y lrzsz也行
卸载的话是
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三个模式下的一些键位的功能
命令模式:
gg:定位光标到最开始行 shift+g(输大写的G一个效果):定位光标到最结尾行 n+shift+g:定位光标到第n行 shift+6(其实就是^):定位光标到当前行开头 shift+4(其实就是$):定位光标到当前行结尾 w:光标按单词为单位进行向左移动 b:光标按单词为单位进行向右移动 (如果那个东西不是单词的话,就按字符为单位移动) h:光标按字符为单位进行向左移动 l:光标按字符为单位进行向右移动 j:光标按字符为单位进行向下移动 k:光标按字符为单位进行向上移动 (hl左右 jk上下 其实用键盘上的上下左右键也行,但是不方便) (也不建议用鼠标的滚轮) nyy:复制光标所在行及下面一共n行(直接yy则1行) ndd:剪切光标所在行及下面一共n行(直接dd则1行)--也能用于删除 np:粘贴粘贴版的内容到光标的下一行及之后n次(直接p则1次) (这个粘贴版上的必须要是Vim里面用yy和dd搞的才行) u:撤销上一次的操作 ctrl+r:撤销上一次的撤销 shift+`:进行大小写转换--一直按住,光标移动到的地方都会变 nr"字符":对光标字符及之后的字符一共n个进行批量化替换(都替换成"字符") nx:对光标字符及之后字符一共n个字符进行删除 !:暂时跳出 Vim,执行系统命令 比如:! man 3 printf
底行模式:
w:保存文件 q:退出文件(注意是q不是p)
wq:保存并退出文件(连着输! 在页面显示的是:wq)
后面加!(
w! q! wq!)的话就是强制…
引申:Linux删除的话是删除的光标前一个的东西
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(不要记其他乱七八糟的写法)比如: gcc text1.c text2.c -o text 引申: text1.c中的函数,全局变量想在text2.c中可以用的话常用方法是在.h文件中声明一下 (全局变量的话要用extern声明)如果没有要求目标文件的文件名的话,默认是叫
a.out这个可执行程序的运行:eg:
./a.out引申:也就是如果要执行程序,则需要写出程序的相对路径或绝对路径
预处理:
gcc -E text.c -o text.i到编译结束:
gcc -S text.i -o text.s 当然,也可以直接传text.c进来到汇编结束:
gcc -c text.s -o text.o 当然,也可以直接传text.c这些进来引申:这里的text.o文件叫做可重定位二进制文件,简称目标文件,(也就是.obj文件)
这个文件不能独立执行,需要经过连接才能执行
有可执行权限和有可执行能力是两码事!
到链接结束:(将目标文件和库进行连接形成可执行程序)
gcc text.o -o text 当然,也可以直接传text.c这些进来引申:1.
-o是 gcc 的一个选项,作用是 指定输出文件的名称2.上面的简记:`ESc iso(文件的后缀应该加啥)`
gcc的选项还有比如:
-g:生成带有调试信息的可执行文件`-static`:使用静态链接
动态链接和静态链接
.o文件通过动态链接和动态库相连,连接完之后对应的动态库不能缺失,不然会出问题(通过动态链接跳转到动态库中去执行,执行完再返回代码调用处)
编译器在对
.o文件使用静态库进行静态链接时,会将库的方法拷贝到目标程序中,这个程序以后就不用依赖静态库了
在Linux中,编译形成可执行程序,默认采用的就是动态链接
如果想要按照静态链接的方式,需要添加
-static选项引申:一个可执行程序里面不一定是全部动态链接或者全部静态链接
动态库(也叫共享库)和静态库
库的概念:就是把源文件(.c文件)经过一定的翻译,然后打包–只给别人库文件可以达到隐藏源文件的目的(库本质就是一个文件)
库有自己的命名规则:eg:
libname.so.xxxname那个位置的才是库的名字,xxx那个位置是其版本号,lib是Linux库文件名的固定前缀,so表示是动态库
Linux下,
.so是动态库,.a是静态库一般系统默认会把动态库安装好,静态库不会
安装静态库的方法:
yum install -y glibc-static--C的静态库`yum install -y libstdc++-static`--C++的静态库
如果没有静态库,但是用了
-static,是不行的如果没有动态库,只有静态库,用默认方式–是可以的
(因为
gcc只是默认优先动态链接而已)
动态库vs静态库
动态库是共享库,优点:可以有效的节省资源(比如:磁盘空间,内存空间,网络空间)
缺点:动态库一旦缺失,会导致各个程序都无法运行静态库:优点:不依赖库,程序可以独立运行
缺点:体积大,比较消耗资源
debug版本和release版本
debug版本可以被追踪调试 release版本不可以,但是快
而且
debug版本形成可执行程序的时候添加了debug信息,体积会大些
扩展:
可执行程序形成的时候,不是无序的二进制构成,是由自己的格式的(ELF格式)




浙公网安备 33010602011771号