目录
1.Linux编辑器——vim使用
2.Linux编译器——gcc/g++
3.Linux项目自动化构建工具——make/Makefile
4.Linux软件包管理器——yum
5.Linux调试器——gdb
前言:因为篇幅原因,本文着重列出命令,小伙伴下去自己尝试,只有多使用才能真的记住!
1.Linux编辑器——vim使用
vim是一款多模式的编辑器
——命令模式(默认打开的模式)
——编辑/插入模式(输入i)(输入ESC回退到命令模式)
——底行模式(输入shift + :)(输入ESC回退到命令模式)
——替换模式(shift+r)
常见命令:(括号里的相当于解释,在输入命令时不需要)
yy:将当前光标所在的行,复制 nyy(n代表具体数字,复制n行)
p:将复制行进行粘贴 np(复制n倍)
dd:将当前光标所在的行进行剪切(删除) ndd(删除n行)+p(删除粘贴->剪切)
u:撤销操作
ctrl+r:撤销u操作
shift+g:光标定位到文件的结尾
n+shift+g:光标定位到文件的任意行
gg:光标定位到文件的最开始
shift+6(^):将光标定位达到当前行的最开始
shift+4($):将光标定位到当前行的最结尾
w,b:以单词位单位进行光标的前后移动(w后,b前)
h,j,k,l:左,下,上,右
shift+~:大小写切换
shift+r:进入替换模式
r:替换光标所在的字符 nr(替换n个字符)
x:删除光标所在的字符(从左到右) nx(删除n个字符)
shift+x(X):删除光标所在的字符(从右到左)
底行模式:(光标在哪个屏就是哪个文件的底行)
set nu:显示行号
set nonu:取消行号
vs 文件名:分屏操作
w:写入 w!强制写入
q:退出 q!强制退出
ctrl+w+w:多分屏切换光标
!cmd(cmd是执行命令):不退出vim执行对应的命令(执行命令行,编译,允许,查看man)等
可视模式: ctrl+v(未完待补充)
vim的多行注释:
命令模式下ctrl+v进入可视化模式
使用hjkl选中需要的区块
shift+i进入插入模式
//输入注释,按下Esc实现多行注释
vim的取消多行注释:
命令模式下ctrl+v进入可视化模式
使用hjkl选中需要的区块
直接按x或者d就可以直接删除,再按Esc退出
2.Linux编译器——gcc/g++
g++没有输入命令:
sudo yum install -y gcc-c++
gcc没有输入命令:
sudo yum install -y gcc
gcc是一个专门用来编译链接c语言的编译器
程序翻译的过程:
文本的C->计算机二进制
1.预处理(a.去注释 b.宏替换 c.头文件展开 d.条件编译 ...)
——预处理了还是C语言吗?
答:还是C语言
2.编译(C->汇编)
3.汇编(汇编->可重定向二进制目标文件)
4.链接(链接->多个.o,.obj->合并形成一个可执行).exe
查看版本:
gcc -v
g++ -v
gcc 源文件 -o 可执行文件 #形成可执行文件
或者可以这样写:gcc -o 可执行文件 源文件
预处理:
#-E:从现在开始进行程序的翻译,如果预处理完成就停下来!
gcc -E 源文件 -o 临时文件.i(预处理文件)
编译:
#-S:从现在开始进行程序的翻译,如果编译完成就停下来!
gcc-S 临时文件.i -o 临时文件.s
汇编:
#-c:从现在开始进行程序的翻译,如果汇编完成就停下来!
gcc -c 临时文件.s -o 可重定向可执行文件.o(二进制)
链接:
gcc . o文件 -o 可执行程序
动静态库:
ldd 可执行程序——查看库
file 可执行程序——查看使用什么链接方式
一般链接的过程,是有两种方式的:
a.动态链接——需要动态库(.so) windows下:.dll
b.静态链接——需要静态库(.a) windows下:.lib
动态链接:将库中我要的方法的地址,填入我的可执行程序中,建立关联!(节省资源)
静态链接:将库中方法的实现,真的拷贝到我们的可执行程序中!(占用资源)
gcc、g++默认形成的可执行程序是动态链接的!
如何静态链接?加—static!
-static:表明使用静态链接的方式形成可执行程序!
你的机器可能因为没有静态库,而导致链接失败!
动态链接必须使用.so动态库文件
静态链接必须使用.a静态库文件
sudo yum install -y glibc-static #C静态库
sudo yum install -y libstdc++-static #C++静态库
3.Linux项目自动化构建工具——make/Makefile
make是一个命令
Makefile是一个文件
存在价值:自动化的构建项目
编写Makefile:a.依赖关系 b.依赖方法
make自顶向下扫描,只会自动形成第一个遇到的目标
要想生成下面的:make 目标
.PHONY总是被执行的!
——总是会根据依赖关系执行依赖方法!
——习惯:给clean设置.PHONY
Makefile如何知道我们的可执行程序是最新的??
——根据文件的修改时间(比较可执行程序和源文件的时间,源文件时间比可执行程序晚就会执行make)
Access:访问时间
Modify:内容修改时间
Change:属性修改时间
多文件Makefile:
执行结果:
4.Linux软件包管理器——yum
1.你要下载安装的软件是在你的电脑上面吗?
不是,是在软件开发平台
2.如果不在,你怎么知道在哪里的?
我不知道,yum知道
3.谁放的?
Linux社区或者对应的开发人员
yum作用:a.搜索,下载,安装 b.解决依赖关系
一般原生的Linux系统,内置的下载链接基本都是自己配套的国外的网址
yum的操作
yum源:一个配置文件
查看yum源:ls /etc/yum.repos.d
yum三板斧:
1.#yum list | grep xxxx 查找yum列表
2.#sudo yum install -y 安装软件
3.#sudo yum remove 你的软件 #移除
git——版本控制器
雷纳斯托瓦丝,自己着手写一个版本控制器!——git
git三板斧:
#git clone 你的git仓库链接
1.#git add 你的文件 #添加我们的代码到本地仓库,git add .把所有文件到本地仓库
2.#git commit -m “这里必须写提交日志"
3.#git push #提交我们的代码到远端仓库
git log #查看提交记录
冲突解决:
git pull #同步
阻止一些后缀文件上传:在.gitignore文件中
git rm #可以删除
5.Linux调试器——gdb
gcc,g++默认形成的可执行程序搜索release的!故无法直接被调试!(默认动态链接形成)
要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项
gdb会记录最近一条命令,如果命令没变化,可以直接回车!
gdb命令:
quit:退出
r:开始调试,如果没有设置断点,就直接运行结束!l:查看代码b+行号:给特定的行号打断点info b:查看断点(包含断点的编号)d 断点编号:删除断点n:逐过程,等同VS的F10p 变量名:打印变量内容s:逐语句,等同VS的F11bt:查看当前的调用堆栈finish:将当前函数跑完,就停下来display:设置长显示undisplay 编号: 取消长显示until:跳转到指定行c:运行至下一个断点处会停下来!disable/enable 断点的编号:使能(关闭和打开)断点