Linux---Linux 常用工具

本文详细介绍了Linux系统中的一些常用工具,包括yum作为软件包管理工具,vim编辑器及其三种模式的切换,gcc/g++编译器的编译过程和选项,gdb调试器的使用,make/Makefile在项目自动化构建中的作用,以及git在项目版本管理中的核心分支管理功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

yum: 软件包管理工具

vim

gcc/g++编译器

Linux调试器gdb

make/Makefile :项目自动化构建工具(重点)

git:项目版本管理工具(git精华:分支管理)


yum: 软件包管理工具

查看软件包: yum list     

查看具体安装包  yum list | grep pack_name

检查Linux是否联网: ping 网址

安装软件包: yum install pack_name      eg: yum install gcc

移除软件包: yum  remove pack_name


vim

    vim没有鼠标,为了完成插入删除,复制等操作因此分为了许多模式(12种)

    常用三种模式: 命令行模式(底行模式),插入模式, 普通模式

  •     插入模式: 插入 数据
  •     普通模式: 完成命令操作(移动光标,复制,粘贴,删除,撤销)
  •     底行模式: 保存文件,退出编辑

熟悉三种模式切换(vim filename->打开文件,不存在就进行创建) 

普通模式->插入模式:   

  • i(从光标所在位置开始插入)                       
  • I(光标移动行首,进行插入) 
  • a(光标移动到下一个字符处开始插入)     
  • A(光标移动到行尾,进行插入
  • o(在光标所在行下方添加新行开始插入)   
  • O(在光标所在行上方添加新行开始插入) 

插入模式->普通模式:  Esc

普通模式->底行模式:   :     /    ?

底行模式下的操作       :w  (保存)      :q(保存)    :q!(强制退出)  :q(退出)    //保存退出操作     /string          ?string   字符串查找

底行模式->普通模式:   Esc

    普通模式下的操作:

  • 光标移动:  h左    j下   k上  l右    w或者b 按单词移动光标  ctrl+f/ctrl+b 上下翻页 G移动到文档尾部   gg移动到文档头部                 
  • 复制:   yy 复制光标所在行           nyy从光标所在行复制n行数据           
  • 粘贴:    p向光标所在行下方粘贴   P向光标所在行上方粘贴           
  • 删除:    dd 删除光标所在行        ndd删除光标所在行下方n行数据        x 删除光标所在字符      dw删除单词    D删除光标后的数据
  • 撤销:  u 
  • 恢复撤销: ctrl+r

gcc/g++编译器

 解释程序不需要进行编译,可以直接执行 如 Python,shell语言

gcc将高级语言(C语言)编译成机器可以识别的语言

  • 预处理:去掉注释,展开代码
  • 编译:    语法语义纠错,将C语言代码解释成汇编代码
  • 汇编:    将汇编代码解释为机器指令
  • 链接:    链接库文件中的代码

    静态链接:   链接静态库   将库中代码拷贝到程序中,程序较大,但是运行时不需要依赖静态库的存在. 静态库如果多个程序使用了相同的静态库,运行程序被加载到内存中,会出现多份冗余代码

    动态链接:   链接动态库   记录函数位置符号信息,,程序比较小,但是运行时需要动态库的存在,而动态库,在内存中共享同一份动态库代码.

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

gcc常用选项:

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

格式 : gcc [选项] 要编译的文件 [选项] [目标文件]

实例:  gcc –E hello.c –o hello.i    

          gcc –S hello.i –o hello.s

          gcc –c hello.s –o hello.o

          gcc -o hello.o -o hello 


Linux调试器gdb

功能:调试程序运行过程-----调试Bug---分析程序的错误原因.及错误位置

gdb加载程序的 时候,如果有程序运行参数,不能加载的时候给与应该开始调试的时候给与

gdb ./main->  run -l -a

0.向程序中假如调试符号信息(程序调试的前提)

    gcc默认生成release发布版本程序,可执行程序中没有加入调试符号信息,无法实现逐步调试

    gcc -g   生成debug版可执行程序

1.加载程序

    gdb  ./main

2.开始调试

    run :     直接运行程序     start:    开始逐步调试

3.常见操作  

  list  查看代码       格式: list  file: line 

  n  :下一步,不跟踪进入函数,直接将函数运行完毕     s: 下一步,跟踪进入函数

  until 直接运行到指定行  格式: until file:line

4.断点相关操作(重点)

    break file:line  打断点      break function_name 给函数打断点

    info  查看调试信息        eg:  info break查看断点信息

    print  查看变量内容      eg:    print var   (var指的是变量名,下同)

    continue 继续运行c

    delete 删除断点         eg:  delete 删除所有断点      delete break_id  删除指定断点

     watch  变量监控,当变量名称改变时,停下来   eg:watch var

5.查看调用栈信息(重点)

    bractrace:   查看函数调用栈信息-----快速定位到程序崩溃位置  (bt)

make/Makefile :项目自动化构建工具(重点)

Makefile: 普通文本文件,但是Makefile中记录的是项目的构建流程规则

make:   一个程序---Makefile解释器;解释Makefile中的项目构建规则,完成项目的构建    

            在当前目录下敲击make命令,make程序到当前目录找makefile文件,逐行解释,makefile文件名大小写不敏感

makefile基本编写规则:

目标对象;[ 依赖对象]

tab 要执行的命令

make解释规则:

    make在makefile中寻找第一个对象目标名称:

        若没有找到:认为没有要生成的对象,报错退出

        若找到了:判断目标对象文件是否存在:

            目标对象文件若存在:判断是否依赖对象名称

                若没有依赖对象名称:认为目标对象已经生成,不需要重新执行命令生成

                若有目标对象名称:判断目标对象文件是否已经存在;

                    若存在:判断目标对象文件与依赖对象文件的时间关系

                    若不存在:在makefile继续向下查找依赖对象的生成规则

                            依赖对象在下一条规则中作为目标对象被生成,进而生成第一个目标对象后退出.

             目标对象文件不存在:

                则直接执行命令生成

eg:

main:main.o

    gcc main.o -o main

main.o:main.c

    gcc main.c -o main.o

eg:

text:test.c

    gcc -o test test.c

.PHONY:clean

clean:

    rm test -f

makefiel预定义变量: $@ $<$^

    $@: 目标对象

    $^: 所有依赖对象

    $<: 依赖对象中的第一个

eg:

main:main.c

    gcc  $^ -o $@

.PHONY:clean

clean:

    rm test -f

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

声明伪对象:    .PHONY :对象名称


git:项目版本管理工具(git精华:分支管理)

基本操作:

下载服务器上的代码:git clone 仓库地址(网址)

修改代码后,本地提交(本地管理)

        git add new_file

        git commit -m "本次提交的备注信息"

将本地修改提交到服务器:

        git push origin master

        master是git代码管理主分支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值