文章目录
一、包管理器-yum
LInux中的安装软件:
1源码安装
2软件包安装---rpm 程序之间存在依赖:一个程序可能依赖很多库,如果只下载了这个程序,没有库照样运行不起来 ------------存在依赖缺失/版本兼容性问题
3.推荐:包管理器yum(centos) apt/apt-get(ubuntu)
网络下载+安装(就是拷贝),必须使用root权限;安装到系统里面(共享)任何人都能使用;
:会自动解决包的依赖问题
什么是包管理器
- 类似于手机上面的应用商店
配套软件可以让操作系统生态更好,让更多的人使用
开源本质就是一种商业模式
我的机器怎么知道下载链接?操作系统内置链接,找到就下载,没找到就报错;镜像加更新下载链接
检查机器是否联网:ping -c3 www.baidu.com(网站名)
如果没有报错就是联网的,云服务器肯定是联网的

装软件:sudo yum install -y sl
卸载软件:sudo yum remove -y sl
通过apt list命令可以罗列有哪些安装包,由于包的数量很多,所以我们需要用到grep来筛选一下,lrzsz是linux和windows系统互传文件所需要的软件包
新上线的软件会分为稳定(base)和测试(epel)
安装拓展软件源(就是epel):虚拟机可能会装一下

二、更新yum源-更改配置文件

可以尝试搜索一下搜一下ubuntu好玩的命令!!
三、Linuxb编辑器-vim的使用
vim就是一个编辑器;
基础使用
vim
退出:shift+:在输入 q(冒号一定要加上)
vim code.c
退出:esc shift+: wq
vim的多模式
vim是一款多模式的编辑器
常见的模式是命令模式 (默认打开就是)
底行模式(shift: ): set+(n)nu 设置行号
插入模式(i,a,o(新起一行)),退出的话需要回退到命令模式(esc)
底行和插入模式都可以通过esc退回到命令模式;命令模式下输入i进入插入模式,shift+变成底行模式;
命令模式(快速编辑):
gg:光标快速回到第一行
shift+g=G: 快速定位结尾
n+shift+g:快速定位第n行
shift+$:快速定位某一行的结尾
shift+^:快速定位某一行的开头
h左 j下 k上 l右 光标使用的时候都可以在其前面加上数字,快速移动
以单词为单位:向后移动w,向前移动b,都可以加数字
编辑指令:
yy 光标移动到这一行进行复制当前行、
p 光标所在位置下一行进行粘贴:怎么全选进行复制:#yy
以单词为单位向后移动w,向前移动b
撤销刚才的的动作 u(撤销历史操作)
ctrl+r :撤销u操作(这俩互为对方的撤销)
但是一旦退出,不能撤销,但如果你只是保存是可以进行撤销的
剪切当前行(在不复制的情况下也可以当成删除当前行)dd,n dd把当前行往上的n行全部剪切(删除),n+p 把刚才剪切的内容复制n次
命令模式下x:删除,n x 删除光标后面的字符 X删除光标后面的 想p一下也可以
r替换光标所在字符,在输入修改字符,n r+替换字符
shift+r=R(替换模式):批量替换(按行为单位,就是它一次性输完一整行,要切换下一行需要自己手动切换)
shift+~ 进行大小写切换
3.1 vim
批量化注释:
ctrl+v:V-block 选中区域,shift i
-不仅可以批量化注释也可以批量化补充一些漏掉的东西
查询:光标先定位到要查找的单词 shift+#标出高亮,n进行逆向翻找
vim src +n 直接定位到第n行
!v 直接给打开最近一次执行的以v开头的命令
在命令模式下怎么进入插入模式
a:往后挪动一个字符直接进入插入模式
i:直接进入插入模式
o:另起一行直接进入插入
底行模式1: %s src/dsc/ 批量化修改字符,用后者替换前者
2:!gcc a.out -o code.c 直接编译 直接运行
3: vs 新文件 实现vim分屏操作,切换光标ctrl ww
w:保存 q:退出 wq:保存并退出 (或者shift+zz:这个命令直接在命令模式下用)
vs 文件名:可以直接在vim里面分屏创建新文件
{两个窗口进行切换需要再命令模式下ctrl+ww}
vim是可以直接创建新文件的,但一定要保存一下才可以出现在目录中
使用vim的小技巧:
1.如果编译报错的时候,想要打开文件快速定位错误行,
vim src +n(行号) 例如:vim code.c +14 打开的时候光标就定位在第14行
2.!v:执行最近一次关于v开头的指令操作
四、vim的配置
可以自己去创建.vimrc文件,每一次vim打开的时候都会去调用这个配置文件
可以去github上搜一下一键式安装vim配置文件(一定要在普通账号下去进行一键式安装)
系统里面通常有一个全局的vimrc,他会影响所有账号的vim编辑器,所以不推荐直接去修改系统的vimrc,建议直接配置自己账号的vimrc

五、gcc(只能编译c语言)/g++
- 预处理:展开头文件,去注释 ,宏替换,条件编译 生成.i文件

-E就是开始进行程序翻译,预处理完就停下来
如何理解条件编译?编译器发展?
内核源代码也还是采用条件编译进行代码裁剪
开发工具,应用软件进行专业性划分等收费情况,使用条件编译进行维护
本质就是可以使用条件编译进行代码的动态编辑裁剪等工作
在最开始计算机编程是靠打孔编程,这种方法麻烦琐碎容易出错,后来出现了汇编语言,遇到了如何把汇编语言转化成二进制语言的问题,这时候编译器就出现了;
- 编译:gcc -S code.i -o code.s
把编译工作做完就行,形成汇编语言;为什么编译前要进行汇编?
因为汇编过程是把对应的c/c++语言转换成汇编语言,进而更方便转换成二进制语言来生成可执行程序
- 汇编 gcc -c code.s -o code.o
-c汇编完成就停下
code.o叫做可重定位目标文件,这个文件已经是二进制的,无法执行;源文件中会包含很多的库方法,需要经过链接才能形成可执行
(gcc -c test.c)可以直接把文件生成同名.o文件 - 链接:就是把所有的.o文件进行链接
直接进行默认链接就可以
gcc code.o -o code
自动生成可执行-
像中间的.i .s .o这些临时数据文件都是在编译器内部,在内存中产生的,最后只用给我们一个可执行文件就可以了

通常把多文件一起生成汇编文件.o ,再一起生成可执行文件;同名.obj
编译器在编译时不仅要形成可执行程序,还要形成库(.o文件打包)
可以形成多个可执行,需要什么就用什么.o就打包形成可执行,可自由组合;
库分两类:动态库 静态库
k库是一套犯法方法或者数据集,为我们开发提供组基本的保障(基本接口,功能加速我们二次开发)
- 动态库里面有各种实现方法,可以让自己写的程序能找到在库中实现的方法,再进行动态链接,执行目标方法,执行完了再返回
- 动态链接是找到在动态库中的地址,当我需要某个实现方法时,链接到对应的地址就可以;
- 静态链接到库则是把需要用到的方法的实现从静态库中拷贝一份到我自己的程序中
动静态库对比:
- 如果掉动态库,程序形成的可执行程序体积一定较小
2.可执行程序对静态库的依赖度小,动态库不能缺失
3.程序运行,需要加载到内存,静态链接的程序会在内存中出现重复的代码
4.动态链接,比较节省内存和磁盘资源
5.动态库需要被加载到内存里,在内存里只有一份,只要需要用到这个库里面方法只需调用就可以,所以叫做共享库;而静态库不用加载到内存
6.gcc默认编译就是动态链接,如果强制静态库链接,可能需要安装一下c/c++静态库


