-----------博文目录 ----------
-
1、yum软件包管理器:读法 /亚姆/
- yum list 查看可以安装的软件包 | grep ** 进行筛选查看
- yum install 安装软件包 这个命令也可以进行软件升级处理
- yum remove 移除软件包
例如:
查看可以安装的软件包:
安装 g++
升级处理
-
2、vim文本编辑器
对文本的操作: 插入数据 保存 删除 复制 粘贴 剪切 滚动显示位置 改变输入位置
vim 为了能够实现所有的操作,因此有很多的模式(十二种),每个模式下所完成的功能各有不同
常用:插入模式,普通模式,底行模式
- 普通模式下的操作
1、移动光标
k 上 j 下 h 左 l 右(方向键亦可以)
w b 单词左右移动
ctrl f / b 上下翻页
gg 行首 / 行尾 G gg=G全文对齐
2、复制
yy 复制光标所在行
n + yy 复制 n 行数据
3、粘贴
p 光标下行粘贴
4、剪切
s 剪切光标所在字符并进入插入模式
dd 剪切光标所在行
dw 剪切光标所在单词
5、撤销
u
6、选择
v 加方向键进行选择
数据交互 CTRL + s 与虚拟机退出交互 CTRL + o 继续交互
7、匹配
/ + 匹配的字符串
-
3、大佬们都喜欢的编辑器,下面列举一下除vim以外的编辑器
名称 | 特点 | 不足 |
Eclipse | 1、从编写、查错、编译、帮助等等各方面为Java语言贴身定做。 2、可无限扩展的强大插件功能。 3、众多公司、厂商、组织的鼎立支持。 4、开放,自由,免费。 | 1、大工程时,吃内存耗cpu,依然会出现很慢、卡顿、奔溃和无响应的情况 2、插件对eclipse版本要求比较严格,插件更新速度跟不上eclipse更新速度 3、安装插件过多之后,速度变慢,有些插件安装比较麻烦 |
Emacs | 1、Emacs是伪装成编辑器的操作系统。可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、登陆IRC和朋友交流、查看日历等功能, 2、它也是一个巨大的开放社区,在这里你能结识到更酷一些的程序员。 | 1、智能感知和补全不足 2、插件不完善和不友善 |
vim | 1、VIM是纯粹的自由软件 2、无数种插件,自己选择 | 1、内置脚本语言有局限性 |
Brackets | 1、1.可以实时预览 2、可以快速编辑,在HTML可以编辑CSS和JS代码。 | 暂无 |
Light Table | 1、实时运行反馈,调试和搜索文档的功能 2、及时反馈功能提供了一个不同寻常的运行环境来让程序员构建抽象。 | 暂无 |
Sublime Text 3 | 1、具有漂亮的用户界面和强大的功能 2、可自定义键绑定,菜单和工具栏 3、跨平台 | 暂无 |
Sed | 1、简化对文件的反复操作,编写转换程序 | 1、编辑效率低下 |
-
4、gcc编译器
- 作用:将高级语言代码编译成机器可识别的指令代码
- 编译步骤:
1、预处理 :展开代码
2、编译 :将高级语言代码编译成汇编代码
3、汇编 :将汇编代码编译成机器指令
4、链接 :执行程序,所有调用的文件合在一起执行。
静态链接:直接拷贝代码
动态链接:生成链接地址
5、库 :保存实现函数代码的文件(后面介绍)
1)静态库 :生成可执行程序,链接静态库称为静态链接 , 后缀是 .a
直接将库文件的代码拷贝到可执行程序中,代码冗余量大,占用资源多,对库的依赖程度低
2)动态库 :生成可执行程序,链接动态库称为动态链接 ,后缀是 .so
只记录动态库的位置符号信息,代码冗余量小,占用资源少,对库的依赖程度高
gcc默认链接动态库
名称 作用 例子 gcc -E 只进行预处理 gcc -E test.c -o test.i gcc -S 只进行编译 gcc -S test.i -o test.s gcc -c 只进行汇编 gcc -C test.s -o test.o gcc -o 指定生成文件名称 gcc test.o -o test
gcc 默认生成二进制文件
一般我们都是gcc test.c -o test(c语言)或者 g++ test.cpp -o test(c++)直接搞定(不需要指定库的时候)
-
5、Makefile
作用:一个文本文件,记录项目的变异规则,辅助项目的自动化编译。但是有一个make命令,逐步执行makefile记录的编译规则
命名:Makefile / makefile
编写:
make:只能编译一个目标对象,如果要编译多条,需要加入 ALL
预定义变量: $@ 目标对象 $^ 所有的依赖对象 $< 所有依赖对象的第一个
编写规则必须是制表符开始[tab]
执行过程:make程序在当前工作目录下找makefile文件
1.到当前目录下查找makefile文件,找不到报错
2.到文件找到第一个目标对象,并把这个对象当作终极目标
3.检测这和目标对象和依赖关系的最后一次修改时间,判断是否需要重新编译,如果修改时间一样则不需要重新编译,直接退出
4.如果目标对象不存在则直接生成,但依赖对象可能不存在
5.为了生成终极目标,首先要保证依赖都存在,所以会先去生成所有依赖对象(依赖对象生成的依赖关系二十用户在下边定义的)
也可以这样写:
声明伪对象 :.0PHONY
伪对象 :每次都需要重新生成新的main
-
6、gdb调试工具
1、添加调试符号信息
gcc -g
2、打开gdb环境
- 直接gdb打开环境,然后file+可执行文件
- 或者直接gdb + 可执行文件
3、gdb调试命令
1)显示源程序
list:列出源程序,默认显示十行,多出的行多敲结果list命令
list -:显示当前行之前的十行
list n:从n行到第十行
list start end:从第start行到end行
show listsize:参看list显示的行数,
set listsize:设置list显示的行数
2)控制程序的执行
break n:在第n行设置断点
breadk main:在函数入口设置断点
break main if i==10:在条件处设置断点
info breakpoint(简写:info break):查看断点
delete:清除所有断点
delete n:删除n号断点
3)程序的运行
run:运行程序,执行到断点处
next:单步执行,不进入函数内部:逐过程
step:单步执行,进入函数内部:逐语句
continue:从当前位置出发,执行到断点处
4)查看运行是的数据
print:显示表达式/变量的值
print + 变量:
print + 表达式
print array[0]@n:显示第0个到第n个元素
print array[n]:查看第 n 个元素
print + 变量= 值:修改变量的值
info display + 变量:监视,每次单步执行后会显示变量的变化
delete display:删除监视
5)显示函数调用堆栈信息
backtrace(bt):显示堆栈信息
where:显示堆栈信息
up n:向上显示 n 层
down n:向下显示n层
-
7、项目版本控制工具
- git项目版本控制工具:分布式管理
- suv项目管理控制工具:集中式管理
- git 三板斧
- git clone https-url 从GitHub上克隆代码到当前路径,这个步骤只用进行一次,在你的Linux里有该库名称的目录就行。
- git add file 添加提交的文件
- git commit -m "***" 本地提交,***代表描述信息
- git push 上传代码,后面提示就是输入用户名和密码了
问题一:
*** Please tell me who you are.Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
第一次会提交会出现上述问题,是因为没有初始化,或者说是没有绑定邮箱。这个时候只用git config --global user.email "xxx@xxx.com"引号里的邮箱改成自己的git上的邮箱就行了。类比第二个改成自己用户名也行。
问题二:
error: 无法推送一些引用到 'https://github.com/......
1)这个可能你当时在GitHub上删除了某些文件,这个时候你可以git pull合并后,按照提示输入描述信息,然后git push就行
2)git push -u origin +master 强行提交试一试
附加: = := ?= += 的区别
= 用的时候赋值
:= 及时赋值
?= 空的就赋值
+= 追加赋值