一、软件包管理器(了解即可)
(一)核心概念
-
软件包:提前编译好的软件安装包(类似Windows安装程序),避免手动编译源代码的繁琐。
-
包管理器:用于获取、安装、卸载软件包,自动解决依赖关系,类比“应用商店”。
-
主流工具:
-
CentOS/Fedora/RedHat:yum(Yellow dog Updater, Modified)
-
Ubuntu/Debian:apt(Advanced Package Tool)
-
(二)软件包依赖与镜像源
-
依赖问题:软件运行可能依赖其他库文件(如libc.so、ssl.so),包管理器会自动下载依赖包。
-
国内镜像源(解决国外源下载慢问题):
-
阿里云镜像站:https://developer.aliyun.com/mirror/
-
清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/
-
中国科学技术大学开源镜像站:http://mirrors.ustc.edu.cn/
-
其他:北京交通大学、中科院软件研究所、上海交大、网易镜像站等。
-
(三)yum/apt常用操作
|
操作场景 |
CentOS(yum)命令 |
Ubuntu(apt)命令 |
|
查看软件包 |
yum list | grep 软件名 |
apt search 软件名;apt show 软件名 |
|
安装软件 |
sudo yum install -y 软件名 |
sudo apt install -y 软件名 |
|
卸载软件 |
sudo yum remove [-y] 软件名 |
sudo apt remove [-y] 软件名 |
|
备份安装源 |
sudo mv /etc/yum.repos.d/*.repo 备份目录 |
sudo cp /etc/apt/sources.list 备份文件 |
|
更新安装源缓存 |
sudo yum clean all;yum makecache |
sudo apt update |
(四)注意事项
-
安装/卸载需管理员权限(sudo或root账户)。
-
同一时间只能执行一个yum/apt操作,避免冲突。
-
必须保证网络畅通(可通过
ping www.baidu.com验证)。 -
软件包命名规则:主版本号.次版本号.源程序发行号-软件包发行号.主机平台.cpu架构(如x86_64为64位,i686为32位;el7对应CentOS7/RedHat7)。
-
安装源路径:
-
CentOS:/etc/yum.repos.d/(CentOS-Base.repo为标准源,epel.repo为扩展源)
-
Ubuntu:/etc/apt/sources.list(标准源);/etc/apt/sources.list.d/(扩展源)
-
二、Vim编辑器
(一)vi与vim的区别
-
vim是vi的升级版本,兼容vi所有指令,新增语法高亮、可视化操作等功能,支持多系统(Linux、Mac OS、Windows)。
(二)三种核心模式及切换
|
模式 |
功能描述 |
切换方式 |
|
命令模式(Normal) |
控制光标移动、删除/复制字符/行、切换其他模式 |
打开vim默认进入;插入模式/底行模式按ESC返回 |
|
插入模式(Insert) |
输入/编辑文字(最常用编辑模式) |
命令模式下按i(光标前插入)、a(光标后插入)、o(新行插入) |
|
底行模式(Last line) |
保存/退出文件、查找字符、列出行号、替换等操作 |
命令模式下按Shift+;(输入:)进入 |
(三)常用操作指令
1. 命令模式核心指令
-
光标移动:
-
上下左右:h(左)、j(下)、k(上)、l(右)(num+j,如15j向下跳15行)
-
行内:^(行首)、$(行尾)
-
全文:gg(文首)、G(文末)、#G(第#行,如15G跳至第15行)
-
行号+shift+g:跳至所输入的行 -
屏幕滚动:Ctrl+B(后滚一页)、Ctrl+F(前滚一页)、Ctrl+U(后滚半页)、Ctrl+D(前滚半页)
-
-
删除操作:
-
x:删除光标所在字符;#x(删除光标后#个字符,如6x)
-
X:删除光标前一个字符;#X(删除光标前#个字符)
-
dd:删除光标所在行;#dd(删除光标后#行,如6dd)
-
-
剪切操作:
-
dd+p:剪切光标所在行,然后粘贴缓冲区内容到光标位置;
-
-
复制与粘贴:
-
yw:复制光标到字尾的字符;#yw(复制#个字)
-
yy:复制光标所在行;#yy(复制#行)
-
p:粘贴缓冲区内容到光标位置
-
-
替换与撤销:
-
r:替换光标所在字符;R(Shift+r):持续替换至按ESC
-
u:撤销上一步操作;Ctrl+R(恢复撤销)
-
-
其他:
-
Ctrl+v+(光标移动):区域选择
-
cw:更改光标到字尾的字符;#cw(更改#个字)
-
Ctrl+G:显示光标所在行号
-
2. 底行模式核心指令
-
保存与退出:
-
:w:保存文件
-
:q:退出vim;:q!(强制退出不保存)
-
:wq:保存并退出;ZZ(等价于:wq)、ZQ(等价于:q!)
-
-
查找与替换:
-
/关键字:向后查找;按n继续查找
-
?关键字:向前查找;按n继续查找
-
-
其他:
-
:set nu:显示行号
-
:set nonu 取消显示行号
-
:#:跳至第#行(如:10跳至第10行)
-
3. 注释:
-
批量化注释(给多行代码加注释)
-
进入字符可视模式:光标移到要注释的第一行代码前,按
Ctrl + v(小写v是字符可视,Ctrl+V是块可视)。 -
选中目标行:按
j键向下移动光标,选中需要注释的所有行的 “行首位置”(进行区域选择)。 -
插入注释符:按
I(大写 i,块插入模式),输入注释符//(根据语言选择),按ESC键。
-
批量化去注释(删除多行代码的注释符)
-
-
进入字符可视模式:
Ctrl + v。 -
移动光标选中所有行的 “注释符区域”
//。按j键向下移动光标,选中需要取消注释的所有行,再按l键向右移动所选中所有行的//。 -
直接删除:按
d键(删除选中的块内容),所有行的注释符会同步删除。
4. 多文件窗口视图:
-
在底行模式下输入
:vs (XXX.xx)打开/新建对于名称的文件(vim 新的文件,如果不保存就在目录下生成对应的文件) -
ctrl+ww:在不同的文件窗口切换光标。
(四)简单配置(了解即可)
-
配置文件位置:
-
系统公共配置:/etc/vimrc(对所有用户生效)
-
个人配置:~/.vimrc(用户主目录下,无则创建)
-
-
常用配置选项(添加到.vimrc中):
-
syntax on:语法高亮
-
set nu:显示行号
-
set shiftwidth=4:缩进为4个空格
-
-
插件推荐(可选):
-
TagList:代码标签列表,需下载解压后将doc和plugin目录内容分别放入~/.vim/doc和~/.vim/plugin,配置.vimrc添加:
let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window=1 -
WinManager:文件浏览器和窗口管理器,配置.vimrc添加:
let g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle<cr>
-
三、GCC/G++编译器(了解即可)
(一)编译流程(C/C++程序从源码到可执行文件)
-
预处理(Preprocessing):
-
功能:宏替换、去注释、条件编译、头文件展开
-
指令:
gcc -E 源文件.c -o 目标文件.i(.i为预处理后文件) -
示例:
gcc -E hello.c -o hello.i
-
-
编译(Compilation):
-
功能:检查语法错误,将预处理后的代码翻译成汇编语言
-
指令:
gcc -S 预处理文件.i -o 目标文件.s(.s为汇编文件) -
示例:
gcc -S hello.i -o hello.s
-
-
汇编(Assembly):
-
功能:将汇编代码转换为机器可识别的二进制目标代码
-
指令:
gcc -c 汇编文件.s -o 目标文件.o(.o为目标文件) -
示例:
gcc -c hello.s -o hello.o(主要使用) -
gcc -c hello.c(默认生成同名的目标文件 hello.o)
-
-
链接(Linking):
-
功能:将多个目标文件及依赖的库文件链接为可执行文件
-
指令:
gcc 目标文件.o -o 可执行文件名 -
示例:
gcc hello.o -o hello
-
(二)静态链接与动态链接
|
链接方式 |
核心特点 |
优缺点 |
后缀名(Linux) |
|
静态链接 |
编译时将库文件代码全部加入可执行文件 |
优点:运行速度快,不依赖外部库;缺点:文件体积大,库更新需重新编译 |
.a(静态库) |
|
动态链接 |
编译时不加入库代码,运行时由系统加载依赖库 |
优点:文件体积小,库更新无需重新编译;缺点:依赖系统库存在 |
.so(动态库) |
-
注意:gcc默认使用动态链接,可通过
-static选项强制静态链接(需安装静态库:CentOSyum install glibc-static libstdc++-static -y) -
查看依赖库:
ldd 可执行文件名(如ldd hello)
(三)常用编译选项
|
选项 |
功能描述 |
|
-E |
只执行预处理,不生成文件(需重定向输出) |
|
-S |
编译到汇编语言,不进行汇编和链接 |
|
-c |
编译到目标代码(.o文件),不链接 |
|
-o |
指定输出文件名(如 |
|
-static |
强制静态链接 |
|
-g |
生成调试信息(供gdb调试使用) |
(四)核心概念补充
-
库文件:
-
系统默认库路径:/usr/lib
-
示例:C语言printf函数实现位于libc.so.6(动态库),gcc自动链接该库
-
-
跨平台差异:
-
Linux:动态库.so,静态库.a
-
Windows:动态库.dll,静态库.lib
-
-
多文件编译:
-
示例:两个源文件a.c和b.c,编译命令:
gcc a.c b.c -o main(先分别编译为.o,再链接)
-
1.22&spm=1001.2101.3001.5002&articleId=157810720&d=1&t=3&u=8677704696094fda8e9619b4afe73ead)
427

被折叠的 条评论
为什么被折叠?



