【linux】 常用工具

常用工具
yum—软件包管理工具

 软件安装方法:
  1.手动源码安装
  2.使用工具安装(工具自身可以解决软件包安装的依赖关系)
yum的常用操作:
查看
查看能安装什么
  yum list | grep package_name
查看已经安装了什么
  yum list installed | greppackage_name
安装(root)
 yum install package_name
移除(root)
 yum remove package_name

vim :12种操作模式,但常用的只有三种普通模式、插入模式、底行模式
模式切换header 2
普通<->插入i a o I A O ESC
普通<->底行ESC

**底行模式:**q(退出)   w(保存)   wq(保存并退出)  q!(强制退出)
  /string ?string(字符串查找)

普通模式:
 光标移动:hjkl ctrl+f/b w/b gg G
 复制:yy nyy
 粘贴:p P
 删除:x dw D dd ndd
 撤销:u(上一步) ctrl+r(下一步)
 其他:gg=G

gcc:编译器
功能:将c或c++高级语言代码翻译成机器可识别代码
编译过程具体操作
预处理展开所有代码
展开所有代码语法语义纠错,若为错翻译为汇编代码
汇编语法语义纠错,若为错翻译为汇编代码
链接链接库文件中的代码

链接又分为静态链接和动态链接

静态链接:链接静态库,将库中的代码直接全部拷贝到可执行程序中,
优点:程序运行时,不需要依赖库文件的存在;
缺点:占用资源较多


动态链接:链接动态库,只是记录库中的接口符号位置信息
优点:资源占用冗余较小
缺点:程序运行时需要动态库(又叫共享库/运行时库)的存在		

gcc默认链接方式:动态链接

gcc常用选项
 -E 只进行预处理
 -S 只进行编译
 -c 只进行汇编
 -o 用于指定生成的文件名称
 -static 使用静态链接
 -E 只进行预处理
 -E 只进行预处理
 -E 只进行预处理

gdb:调试器
功能:调试一个程序的运行过程

linux下程序编译默认生成release版本程序,不带有调试符号信息,意味着程序无法被调试所以程序调试的前提就是编译生成debug版本程序,因此gcc编译程序时需要加上 -g 选项,开启调试,向程序中添加调试符号信息

  1. gcc -g main.c -o main
    gdb调试程序,需要将程序信息,加载到gdb中
  2. gdb ./main
    gdb 进入gdb后 运行 file ./main命令

开始调试:
1.运行程序加载运行参数
r(run) -a -b -c -d…
start 开始逐步调试
n(next) 下一步;并不跟踪进入函数
s 下一步;跟踪进入函数
p yar 查看变量数据
l 查看调试行附近(上下五行)代码
l line 查看指定行(默认当前调试行)附近代码
until line 直接运行到指定行

2.常见操作
b line 向当前调试文件指定行添加断点 b file:line 向指定文件指定行添加断点
b func 向函数添加断点
watch var 变量监控,给变量添加断点,当变量内容发生改变,停止
i b 查看断点信息
d id 删除指定断点(默认删除所有)
c(continue) 继续运行

bt 查看函数调运栈信息

make/Makefile:项目自动化构建工具

**Makefile:**普通的文本文件,但是在其中记录的是项目构建的流程规则
**make:**一个程序–Makefile的解释器;     解释Makefile中项目的构建规则;
     完成项目构建
在当前目录下敲击make命令,make程序到当前目录找Makefile文件,逐行解释,对Makefile文件名称大小写无所谓
Makefile基本编写规则:
 目标对象:[依赖对象]
 tab 要执行的命令

make的解释规则
 make在Makefile中寻找第一个目标对象
  若没有找到:认为没有要生成的对象,报错退出
  若找到了:判断目标对象是否存在
   目标对象若存在:判断是否有依赖对象名称
    若没有依赖对象名称:认为目标对象已经生成,不需要重新执行命令生成
    若有依赖对象:判断依赖对象文件是否存在:
     若存在:判断目标对象文件与依赖对象文件的时间关系
     若不存在:在Makefile继续向下查找依赖对象的生成规则
      依赖对象在下一条规则中作为目标对象被生成,进而生成第一个目标对象后退出
   目标对象文件若不存在:则直接执行命令生成

Makefile预定义变量:KaTeX parse error: Expected 'EOF', got '&' at position 2: @&̲emsp;^ $<

@ ∗ ∗ : 目 标 对 象 < / b r > ∗ ∗ @**:目标对象</br> ** @</br>^:所有的依赖对象
$<:依赖对象中的第一个

伪对象:不管对象是否最新,是否存在,每次都需要为对象生成执行命令

.PHONY;声明伪对象 举例: .PHONY: clean
wildcard:获取名称
patsubst:内容替换

方法一:
  1 src=$(wildcard ./*.c)
  2 obj=$(patsubst %.c,%.o,$(src))
  3 main:$(obj)
  4     gcc $^ -o $@ 
  5 %.o :%.c
  6     gcc -c $< -o $@
  7 .PHONY:clean                         
  8 clean:                
  9     rm *.o main 
  方法二:
  c=gcc
  s=mian.c //假设现在有一个mian.c文件
  main:$(s)
  		$(c)  $(s) -o out
  clean:
  		rm *.o
Makefile中变量赋值方式:各有什么不同
=	在等号右侧的值是变量的值,右侧的值可以定义在文件中的任何一处,也就是说,右侧 中的变量不一定非要是已经定义好的值,其也可以使用后面定义的值。也就是说用=赋值的变量,在被解析时他的值取决于最后一次赋值时的值,所以你看变量引用的值时不能只往前面看,还要往后面看。

=   在等号右侧的值是变量的值,右侧的值可以定义在文件中的任何一处,也就是说,右侧 中的变量不一定非要是已经定义好的值,其也可以使用后面定义的值。也就是说用=赋值的变量,在被解析时他的值取决于最后一次赋值时的值,所以你看变量引用的值时不能只往前面看,还要往后面看。
:=   用:=来赋值的,前面的变量不能使用后面的变量,只能使用前面已经定义好了的变量。
?=   如果变量前面并没有赋值过则执行这条赋值,如果前面已经赋值过了则本行被忽略。(所谓的没有赋值过其实就是这个变量没有被定义过)
+=   用来给一个已经赋值的变量接续赋值(把这次的值加到原来的值的后面)有点类似于strcat函数。(在shell makefile等文件中,可以认为所有变量都是字符串,+=就相当于给字符串stcat接续内容)(注意一个细节,+=续接的内容和原来的内容之间会自动加一个空格隔开)

注意:Makefile中并不要求赋值运算符两边一定要有空格或者无空格,这一点比shell的格式要求要松一些。

git:项目版本管理工具(分布式版本管理)
svn:项目版本管理工具(集成式版本管理)

git基本操作:
 下载服务器上的代码:
  git clone github的地址
 修改代码后,本地提交(本地管理):
   git add 新文件
   git commit -m “本次提交备注信息”
 将本地修改提交到服务器:
   git push origin master
   master是git项目版本的主分支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值