Linux常用编程工具


前言

本片文章主要介绍Linux编程中,我们这些新手小白常用的,编程工具,调试工具等等,具体内容将于下面进行详细的说明

一、yum ——软件包管理工具,完成第三方工具软件的安装与卸载功能

查找:
list 查看所有工具
search [空格] 工具名

安装:
install [空格] 工具名(在具有root权限的情况下执行)

卸载:
remove [空格] 工具名 (在具有root权限的情况下执行)

二、vim ——编辑器,linux写代码的工具

模式切换:(返回普通模式:Esc)
vim filename 打开文件(文件不存在则创建) —默认处于普通模式
普通->插入
i,o,a,I,O ,A
共有六种不同的插入方式,具体实践大家可以自己试试,大小写功能是不相同的,我们常用的****是”i“的插入方式

**普通->低行:**——“/” ,”?“ 都可以,只是功能不同
    :w——保存  
    :q—— 退出 
     :wq—— 保存并退出 
     :q!——强制退出不保存
     /string——匹配字符串
    ?string——查找字符串
    :%s——全文指定字符串替换
     :[num],[num]s/oldstring/newstring/g ——选定范围字符串替换
**其他->普通**  Esc
    dd ——剪切或删除光标所在行(按 P 即可粘贴)
    [num]dd  从光标所在行进行多行剪切或删除
    yy  复制
    [num]yy  从光标所在行进行多行复制
    u  撤销上一次操作
    Crtl+r 还原撤销
光标移动: 上下左右 hjkl   Ctrl+f/b  G/gg
全文对齐: gg=G

三、g++/gcc ——编译器,即将高级语言编译成为机器指令

默认链接方式:动态链接
编译过程:
预处理——展开所有代码(宏替换,头文件,)
gcc -E 文件名 (-o(用来生成一个预处理文件) 生成的文件名)(mian.i)

编译——语法语义检测,没有错误则将代码解释成汇编指令
gcc -S 文件名 -o…(mian.s)
gcc -g——生成debug调试程序
eg: gcc -g main.c -o mian

汇编——将汇编指令解释成二进制的机器指令
gcc -c 文件名 -o…(mian.o)

链接——将所有需要的二进制机器指令(其他的.o以及库文件)打包生成可执行程序
gccmian.o -o…(mian)

静态链接:
将库中的使用到的代码写入到可执行程序中

缺陷:生成的程序较大,在运行时存在重复冗余代码
优点:运行时不需要依赖库

动态链接:
在可执行程序种记录库中函数符号信息表,并没有把具体实现的指令写入可执行程序而是在运行程序的时候去加载这个库

优点:生成的程序小,在内存中共享库
缺陷:运行时依赖库的存在

四、gdb ——调试器,调试程序运行过程

默认链接方式:动态链接
编译过程:
预处理——展开所有代码(宏替换,头文件,)
gcc -E 文件名 (-o(用来生成一个预处理文件) 生成的文件名)(mian.i)

编译——语法语义检测,没有错误则将代码解释成汇编指令
gcc -S 文件名 -o…(mian.s)
gcc -g——生成debug调试程序
eg: gcc -g main.c -o mian

汇编——将汇编指令解释成二进制的机器指令
gcc -c 文件名 -o…(mian.o)

链接——将所有需要的二进制机器指令(其他的.o以及库文件)打包生成可执行程序
gccmian.o -o…(mian)

静态链接:

将库中的使用到的代码写入到可执行程序种

缺陷:生成的程序较大,在运行时存在重复冗余代码
优点:运行时不需要依赖库

动态链接:

在可执行程序种记录库中函数符号信息表,并没有把具体实现的指令写入可执行程序,而是在运行程序的时候去加载这个库

优点:生成的程序小,在内存中共享库
缺陷:运行时依赖库的存在

gdb调试器——调试程序运行过程
调试程序的前提 ——这个程序是一个debug版本的程序

debug程序:
不进行代码优化,并且会加入调试信息
release程序:
会进行代码优化,提高程序运行效率(gcc默认生成release版本程序无法进行调试

常见调试指令:
    开始调试:
        程序运行参数是gdb加载完成之后run/start的时候给予
        run                                    ——直接运行到断点
        start                                  ——逐步调试
        list [空格] 程序文件名:[num]             ——查看指定文件程序,指定行附近代码
        n/next——下一行(后续可用回车代替)(不会进入函数内部,直接执行完函数)——逐过程
        s/step——下一行(会进入函数内部)           ——逐语句
        until[空格]程序文件名:[num]              ——运行到程序指定行
        b/break[空格]程序文件名:[num]            ——给指定文件指定行打一个断点
        info[空格] break                       ——查看设置的断点
        break [空格] 函数名                     —— 给函数打断点
        d/delete[空格] id(断点ID)               ——删除断点
        print                                 ——查看/设置变量数据
        watch [空格] 变量                      ——给变量打一个监控断点,变量发生变化时触发断点
        continue                              ——从调试位置开始继续运行
        backtrace                             ——查看函数调用栈,快速找到程序崩溃位置

五、make/makefile ——项目的自动化构建工具

touch makefile —— 创建一个文本文件
一个普通文本文件,在其中编写项目的构建规则

编写规则:
        目标对象:依赖对象......
        [tab]为了生成目标对象所需要执行的指令
        预定义变量:
        $@                               ——目标对象
        $^                               ——所有依赖对象
        $<                               ——依赖对象中的第一个
        SRC=$(wildcard ./*.c)            ——获取当前文件下所有以.c结尾的文件
        OBJ=$(patsubst %.c,%.o,$(SRC))   ——pastsubst对SRC中的内容进行后缀名字符串替换
        %.o:%.c                          ——通配符生成目标对象
        .PHONY                           ——声明为对象,与外部文件脱离关系的对象

实际操作就如同下面这个例子一样:
这是现在mktest文件中所存放文件

在这里插入图片描述这是makefile基于上面的准则写好的文件内容

在这里插入图片描述

make

是makefile解释程序,在当前目录下找到名为makefile的文件逐行解释执行

解释执行规则:
make生成第一个目标对象之后就会退出
为了生成目标对象,递归查找依赖对象生成规则,生成依赖对象再去生成目标对象

六、git —— 项目的版本管理工具

将项目的每个节点版本保存起来,以便随时能够回滚还原
协同开发
操作:
    克隆远程仓库:git clone  [ gitee仓库路径 ]
    添加修改记录:git add --all ./ 
    提交本地仓库:git commit -m "备注信息"
    同步远程仓库:git push origin master

总结

这篇文章主要是想帮助初入linux的萌新的一点,快速的笔记说明,只是我个人的一些笔记的汇总,如果有写的不清楚,或者不对的地方,希望可以得到大家的指正,emmm,这些还是希望大家可以多多练习,毕竟这个真的是熟能生巧,动手跟着操作肯定比干瞪眼的效果会好的更多,加油!!!大家一起共同进步!!!!冲!!!!

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值