目录
常用工具:
主要分类为:安装包管理工具(软件商店)、编辑器、编译器、调试器、项目自动化构建工具、项目版本管理工具、文件传输工具。
安装包管理工具:
查找含有关键字的软件包
安装软件
安装文件传输工具
安装编辑器
C语言编译器
C++编译器
安装调试器
安装项目版本管理工具
cmake
卸载软件
安装jsoncpp
安装boost库
安装mariadb
安装tree(让目录以tree的形式进行显示)
卸载:
编辑器vim
背景:
unix开发出来后,出了第一款类unix平台编辑器vi,但是vi并不好用,因此vim出现。
vim是一个命令行编辑器,因此默认无法使用鼠标进行操作。
为了能够使vim使用更加方便,为此设计了多种操作模式,在不同的操作模式下,相同的按键会有不同的作用。
vim的使用
操作模式共有12种,而写代码的主要只有3种。
普通模式:
是对文档内容进行命令操作
插入模式:
对文档内容的编辑
底行模式:
对文档的保存以及退出操作
vim后边更上文件名,就可以使用vim打开文件,默认处于普通模式
基本操作
还有大写I A O
: 进入底行模式
ESC 进入普通模式
复制:
粘贴:
剪切/删除:
撤销:
对其以及行操作
光标移动:
翻页:
分屏:
编译器:
将高级语言代码解释成为机器可识别的指令(不同的语言有不同的编译器)
C语言:gcc,msvc,clang.....
C++语言:g++
编译器进行代码解释的四个阶段:
预处理:
头文件引用,去除注释,宏替换...
编译:
进行语法,语义纠错,没有错误则将代码解释成为汇编指令
汇编:
将汇编指令,解释成为机器能识别的二进制指令。
链接:
将所有的机器代码(不同.c生成的文件,库文件)进行打包生成一个可执行程序
gcc编译器常用选项:
-E 只进行预处理
-S 只进行编译
-C 只进行汇编
-O 指定生成的文件名称
如果gcc不跟其他选项,那么生成的就是可执行程序
gcc -E main.c -o main.i
gcc -S main.i -o main.s
gcc -C main.s -o main.o
链接:库
在系统中,有一种文件叫做库文件:是进行特定功能,提前封装实现的函数,经过预处理,编译,汇编,打包之后生成的一个提供给别人使用的代码文件
库文件
虽然也是大量的二进制代码打包文件,但是它没有main函数。(因为一个代码里是不能出现两个main函数的。)
动态库&静态库
编译器的链接方式:
动态链接:
优点:
缺点:
静态链接:
优点:
缺点:
gcc默认链接方式:
动态链接(在同一个目录下,有同名的动态库文件,静态库文件lib.so,libc.a,这时候优先链接动态库)
调试器:gdb
作用:
调试程序的运行过程,排查程序运行结果结果不符合预期的原因。
可执行程序分为两类:
debug程序--调试版:
程序员调试程序运行的过程,调试错误
release程序--发布版:
测试人员测试的版本,以及交付的版本
gcc编译器对程序进行编译,最终生成的可执行程序,默认是release版本
然而release版程序是无法被调试的(因为程序中没有调试符号信息,并且代码有可能进行了优化)。
程序调试操作一:
程序调试操作二:
程序调试操作三:
程序调试操作四:
程序调试操作五:
程序调试操作六:
程序调试操作七:
程序调试操作八:
程序调试操作九:
程序调试操作十:
程序调试操作十一:
程序调试操作十二:
程序调试操作十三:
项目的自动化构建工具:make&Makefile
Makefile:
make:
注意:Makefile文件名是固定的,可以是Makefile或者makefile。其他的都不行
Makefile的编写规则:
\t指令
make解释规则:make会在makefile中找到第一个目标对象
make解释规则:
makefile中的其他简化操作:
预定义变量:
wildcard获取指定目录下特定规则的文件名
patsubst对字符串进行内容替换,将.c替换为.o
伪对象:
使用PHONY声明一个对象为伪对象
作用:分离目标对象与实际文件之间的关系
(声明makefile中的目标对象是一个假的对象,与实际的文件没有关系。)
这样的话,目标对象的编译规则中的指令无论如何都会被执行。
(为了让一个指令不受外部文件影响,每次都执行。比如有时候.o是最新的,就会导致不会运行make,或者说外面有一个clean的文件,再使用make clean它就不知道执行什么,所以需要这样一个设置。)
项目版本管理工具:git
项目的版本管理:说白了就是将不同提交版本的代码给备份起来以备回滚,以及容灾。
版本管理的工具种类:svn,git,......
1、克隆远程仓库:git clone [地址]
比如gitee的地址在:
点击http
2、添加修改项:git add --all ./
3、提交版本:git commit -m [本次版本的备注]
4、远程推送:git push origin master
⚠️提示⚠️:比如今天在a文件内提交了main1到master在b文件内也想提交main2到master,那么应该先进行pull再进行main2的提交。
git教程参考网址:
Wiki - Gitee.com帮助