目录
五、Linux项目自动化构建工具 — make/Makefile
一、Linux软件包管理器 — yum
1.Linux下软件安装的方式
2.如何查看Linux下的软件包
[mlg@VM-20-8-centos soft]$ sudo yum list
3.利用yum来安装相应的软件
[mlg@VM-20-8-centos soft]$ sudo yum install sl\.x86_64//这种需要输入y来进行确认
//或
[mlg@VM-20-8-centos soft]$ sudo yum install -y sl\.x86_64//这里带 -y 可以直接安装
4.利用yum来进行软件的卸载
[mlg@VM-20-8-centos soft]$ sudo yum remove sl
5.如何实现云服务器与本地机器间的文件互传
6.注意事项
二、Linux编辑器 — vim的使用
1.vim常见的三种模式
2.vim键盘图
3.vim三种基本模式间的切换
4.vim的命令模式下相关命令
①光标移动
按键操作 | 功能描述 |
---|---|
h | 左移一个位置 |
j | 向下一行 |
k | 向上一行 |
l | 右移一个位置 |
G |
移动到文章的最后 |
$ |
移动到光标所在行的"行尾" |
^ |
移动到光标所在行的“行首" |
w |
光标跳到下个字的开头 |
e |
光标跳到下个字的字尾 |
b |
光标回到上个字的开头 |
#l |
光标移到该行的第#个位置,入5l |
gg |
进入到文本开始 |
shift+g |
进入文本末端 |
ctrl+b |
屏幕往“后”移动一页 |
ctrl+f |
屏幕往“前”移动一页 |
ctrl+u |
屏幕往“后”移动半页 |
ctrl+d |
屏幕往“前”移动半页 |
②删除
按键操作 | 功能描述 |
---|---|
x |
每按一次,删除光标所在位置的一个字符,支持nx |
#x |
例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符 |
X | 大写的X,每按一次,删除光标所在位置的“前面”一个字符 |
#x | 例如,「20X」表示删除光标所在位置的“前面”20个字符 |
dd | 剪切光标所在行,支持ndd |
#dd | 从光标所在行开始删除#行 |
③复制
按键操作 | 功能描述 |
---|---|
yw | 将光标所在之处到字尾的字符复制到缓冲区中 |
#yw | 复制#个字到缓冲区 |
yy | 复制光标所在行到缓冲区 |
#yy | 例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字 |
p | 将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能 |
④替换
按键操作 | 功能描述 |
---|---|
r |
替换光标所在处的字符,支持nr |
R |
替换光标所到之处的字符,直到按下「ESC」键为止 |
⑤撤销
按键操作 | 功能描述 |
---|---|
u |
如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回 复 |
ctrl + r |
撤销的恢复 |
⑥更改
按键操作 | 功能描述 |
---|---|
cw |
更改光标所在处的字到字尾处 |
c#w |
例如,「c3w」表示更改3个字 |
⑦大小写切换
按键操作 | 功能描述 |
---|---|
~ | 完成光标所在位置向后进行大小写切换 |
n~ | 完成光标所在位置向后n个字符进行大小写切换 |
⑧跳转至指定行
按键操作 | 功能描述 |
---|---|
ctrl+g |
列出光标所在行的行号 |
#G |
例如,「15G」,表示移动光标至文章的第15行行首 |
5.vim底行模式下相关的命令
①行号设置
set nu //调出行号
set nonu //取消行号
②跳转到文件中某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,
再回车,就会跳到文章的第15行。
③查找字符
「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按
「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直
按「n」会往前寻找到您要的关键字为止
④保存与退出
w:保存文件
q:退出vim
!:强制
w! q! wq!
⑤执行指令
!+指令:可以在不退出vim的情况下进行指令操作;
⑥分屏操作
vs 文件名:可以实现分屏,进行多个文件编辑;
ctrl+w+w:屏幕切换(当前底行模式下输入的命令并执行只与当前光标所在文件有关,和鼠标点击哪个文件无关)
6.vim的配置
①配置文件的位置
②vim配置方法
三、Linux编辑器 — gcc/g++的使用
1.gcc和g++的使用
#include <stdio.h>
#define NUM 100
int main()
{
printf("hello vim\n");
//printf("hello vim\n");
//printf("hello vim\n");
//printf("hello vim\n");
//printf("hello vim\n");
printf("hello vim\n");
printf("NUM = %d\n",NUM);
return 0;
}
1.预处理
2.编译
3.汇编
4.链接
2.静态库与动态库
1.静态链接与动态链接的区别
2.如何实现静态链接(含安装)
3. gcc/g++常用选项
选项 | 功能 |
---|---|
-E |
只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面 |
-S |
编译到汇编语言不进行汇编和链接 |
-c |
编译到目标代码 |
-o |
文件输出到 文件 |
-static |
此选项对生成的文件采用静态链接 |
-g |
生成调试信息。GNU 调试器可利用该信息。 |
-shared |
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库 |
-w |
不生成任何警告信息 |
-Wall |
生成所有警告信息 |
-O0 -O1 -O2 -O3 |
编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高 |
四、Linux编辑器 — gdb的使用
1.gdb的基本概念
2. gdb指令
1.常用指令汇总
指令 | 简写 | 功能 |
---|---|---|
list | l | 显示代码,每次列出10行,然后接着上次位置往下列 |
run | r | 运行程序 |
next | n | 单条执行(相当于VS下的F10) |
step | s | 进入函数调用(相当于VS下的F11) |
break | b | 在某一行或某个函数开头设置断点 |
info break | i b | 查看断点信息 |
finsh | 执行到当前函数返回,然后停下来等待命令 | |
| p | 打印变量值或表达式的值 |
set var | 修改变量的值 | |
continue | c | 从当前位置开始连续执行程序,遇到断点停下 |
delete breakpoints | delete | 删除所有断点 |
delete breakpoints n | delete n | 删除序号为n的断点,可以多个删除 |
disable breakpoints | 禁用断点 | |
enable breakpoints | 启用断点 | |
display | 跟踪查看一个变量,每次停下来都显示它的值 | |
undisplay | 取消对先前设置的那些变量的跟踪 | |
until | 跳转到指定行 | |
breaktrace | bt | 查看各级函数调用及参数 |
info locals | i locals | 查看当前栈帧局部变量的值 |
quit | q | 退出gdb |
2.指令操作演示
#include <stdio.h>
int fun(int p)
{
int i = 0;
int sum = 0;
for(i = 0;i <= p;i++)
{
sum += i;
}
return sum;
}
int main()
{
int x = 100;
int ret = 0;
ret = fun(x);
printf("ret = %d\n",ret);
return 0;
}
在函数执行过程中,finish是用来结束当前函数
在函数执行过程中,continue是用来直接到达下一个断点(在有断点的情况下)
until是用来跳转值某一行的
五、Linux项目自动化构建工具 — make/Makefile
1.make/Makefile的背景
2.依赖关系和依赖方法
3.如何编写Makefile文件
1.创建Makefile文件
2.编写Makefile文件
3.效果展示
4.make的原理
5.项目清理
六、Linux第一个小程序 — 进度条
1.回车换行的概念
2.行缓冲区的概念
//程序1
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello Makefile!\n");//带换行
sleep(3);//休眠3秒
return 0;
}
//程序2
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello Makefile!");//不带换行
sleep(3);//休眠3秒
return 0;
}
//程序3
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello Makefile!");//不带换行
fflush(stdout);//刷新缓冲区
sleep(3);//休眠3秒
return 0;
}
3.进度条代码
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main()
{
int i = 0;
char bar[102];
memset(bar, 0 ,sizeof(bar));
const char *lable="|/-\\";//类似于加载的过程
while(i <= 100 )
{
printf("[%-100s][%3d%%][%c]\r", bar, i, lable[i%4]);
fflush(stdout);//刷新缓冲区
bar[i++] = '#';
usleep(50000);
}
printf("\n");
return 0;
}