欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-20 09:39:24
...
常用工具
  	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中找到第一个目标对象,若目标对象不存在,则执行命令开始找一依赖对象,这时候如果这个对象的依赖对象不存在,则在后续的编译规则中寻找是否可以生成这个依赖对象,当所有的依赖对象生成完毕后最终生成目标对象(判断目标对象是否存在,依赖对象是否存在);若目标对象存在,无依赖对象则报错,若有依赖对象则判断时间关系;若没找到则查找依赖对象生成规则生成依赖对象。
	预定义变量
		[email protected]	要生成的目标对象
		$^	所有的依赖对象
		$<	依赖对象中的第一个
		.PHONY关键字用于申明伪对象	(伪对象:不管对象是否是最新,每次都要重新生成)

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

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