Linux------开发工具的使用

常用工具
  	yum: 软件包管理工具
		软件安装方法:
			手动源码安装(非常不推荐)
			使用工具安装
			工具自身可以解决软件包的依赖关系
		常用操作(除安装外都需root权限)
			查看
 				yum list	查看能够安装什么
				yum list installed	|  grep package 查看已经安装了什么
			安装
				yum install	package_name
			移除
				yum	remove	package_name
	vim: 编辑器
		十二种操作模式,但是常用三种:普通模式;插入模式;底行模式
			普通《=》插入:i	a	o	I	A	O
				光标移动:	hjkl	ctrl+f/b向下/向上翻页	w/b	gg回到文件第一行	G跳到文件最后一行	e
				复制:		yy	nyy复制多行
				粘贴:		p向下粘贴	P向上
				剪切(删除)	x删除光标所在字符		dw按单词来删除	D	dd删除光标所在行	ndd所在行一下n行
				撤销:		u上一步	crlt+r下一步
				其他:		gg=G全文对齐
			普通《=》底行	:
				q:	退出vim
				wq:保存退出
				q!:强制退出
				set:设置行号 	
				/	string	?string 	字符查找

	gcc: 编译器(将c/c++高级语言代码翻译为机器可识别的代码)
		预处理:	展开所有代码,头文件展开,宏替换,去注释,条件编译-----.i
		编译:	语法语义纠错,翻译为汇编代码		-----.s
		汇编:	将汇编代码翻译成二进制(机器码)可识别指令-----.o
		链接:	链接库(机器码),将所有代码合在一起生成的可执行程序(可执行程序)----- 		。exe//a.out
		库文件:	已经汇编完成的公共代码
		链接:	将库中的代码拿到要生成的可执行程序中
			动态链接:	链接动态库,只是记录库中的接口符号位置信息,好处是资源冗余较小,但是缺点是程序运行时需要动态库的存在。共享库/运行时库(都为动态库)
			静态链接:	链接静态库,将库中代码直接拷贝到可执行程序中,好处是程序执行时不需要依赖库文件的存在;缺点为占用资源较多
		gcc链接方式默认为动态链接
	
	gdb:调试器(调试一个程序的运行过程)
		linux下程序编译默认生成release版本,不带有调试符号信息,意味着程序无法被调试;所以程序调试的前提就是编译生成debug版本程序,因此gcc编译程序时需要加上-g选项,开启调试,向程序中添加调试符号信息
			gcc -g main.c -o main
			gdb调试程序需要将程序信息加载到gdb中
	gdb ./main            		gdb	进入gdb后 	运行		file	./main命令
	开始调试: run
		运行程序加载运行参数:	r	parmarm1 	param2	.......
		start:	开始逐步调试															
		n		下一步:遇到函数直接运行并不跟踪进入函数
		s		下一步:遇到函数运行并跟踪进入函数
		p var	查看变量数据
		l line(line指定行号)	指定查看调试行附近代码
		untill line		直接运行到指定行
		b line	向当前调试文件指定行添加断点
		flie : line	向指定文件指定行添加断点
		func	向函数添加断点
		watch	var	变量监控,给变量添加断点,当变量内容发生改变,停止
		i 	b	查看所有断点信息
		d id	删除指定断点	,默认删除所有
		c		断点停止后,继续运行
	bt:	查看函数调用栈信息

make/makefile:项目自动化构建工具
	makefile:	定义编译规则的普通文件
	make:	是一个解释程序,解释执行makefile中定义的编译规则					执行make命令,这时make程序会到当前目录下寻找makefile文件,解释其中的编译规则
	如何编写makefile,编写规则(目标对象:依赖对象)
		通过目标对象与依赖对象最后一次修改时间,判断目标对象是否需要重新生成
		make在makefile中只找第一个目标对象,为了生成这个目标对象而执行命令,完毕后直接退出(后面的对象都不会生成)
		make在makefile中找到第一个目标对象,若目标对象不存在,则执行命令开始找一依赖对象,这时候如果这个对象的依赖对象不存在,则在后续的编译规则中寻找是否可以生成这个依赖对象,当所有的依赖对象生成完毕后最终生成目标对象(判断目标对象是否存在,依赖对象是否存在);若目标对象存在,无依赖对象则报错,若有依赖对象则判断时间关系;若没找到则查找依赖对象生成规则生成依赖对象。
	预定义变量
		$@	要生成的目标对象
		$^	所有的依赖对象
		$<	依赖对象中的第一个
		.PHONY关键字用于申明伪对象	(伪对象:不管对象是否是最新,每次都要重新生成)

git:	分布式的项目版本管理工具																								
svn:	集成式的项目版本管理工具
	克隆代码到本地(克隆代码)
		git clone  git地址(项目地址)
	添加本地文件
		git add 新文件
	提交代码到本地仓库
		git	commit -m	"本次提交备注信息"
	提交本地代码到服务器分支
		git	push  origin	master(master是git主分支)

进度条:
	\r:光标回到原来位置覆盖之前的东西
	\n:换行符
	对于stdout/stderr,\n不仅具有换行作用而且还有刷新缓冲区的作用

你可能感兴趣的:(Linux开发工具的使用)