Linux常用编程工具

news/2024/11/23 23:21:40/

文章目录

  • 前言
  • 一、yum ——*软件包管理工具,完成第三方工具软件的安装与卸载功能*
  • 二、vim ——*编辑器,linux写代码的工具*
  • 三、g++/gcc ——*编译器,即将高级语言编译成为机器指令*
  • 四、gdb ——调试器,调试程序运行过程
    • **静态链接:**
    • **动态链接:**
  • 五、make/makefile ——*项目的自动化构建工具*
    • make
  • 六、git —— *项目的版本管理工具*
  • 总结


前言

本片文章主要介绍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 ——选定范围字符串替换
**其他->普通**  Escdd ——剪切或删除光标所在行(按 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,这些还是希望大家可以多多练习,毕竟这个真的是熟能生巧,动手跟着操作肯定比干瞪眼的效果会好的更多,加油!!!大家一起共同进步!!!!冲!!!!


http://www.ppmy.cn/news/430042.html

相关文章

汇总五大通用编程工具,作为程序员没用过3款以上的,都OUT了

作为程序员来说&#xff0c;做编程可谓是家常便饭了&#xff0c;俗话说得好&#xff1a;功夫再高&#xff0c;也要趁手的兵器&#xff01;正如程序员做编程一样&#xff0c;今天给小伙伴推荐的是大部分程序员最常用的五大工具&#xff0c;作为资历程序员没用过3款以上的太有点被…

编程实用工具大全(前后端皆可用,不来瞅瞅?)

从事:Python&#xff0c;前端,Java&#xff0c;C&#xff0c;C&#xff0c; R &#xff0c;Javascript&#xff0c;C#&#xff0c; Matlab &#xff0c; Swift &#xff0c; Go &#xff0c;数据库等领域的都适合。 目录 1.Snipaste 2.命名神器codelf 3.渐变色神器 4.CSS阴…

编程实用工具大全(二)(前后端皆可用,不来看看?)

目录 1.零代码工具箱 - 专为前端打造 1. SVG波浪背景生成器 2.在线生成 新拟态风格 CSS 代码 3.在线生成CSS玻璃形态效果 4.CSS文本排版工具 2. 在线模拟数据生成器-专为后端打造 3.VARBook-适合英语基础薄弱者 4.零代码 - Table在线布局工具&#xff08;Excel转HTML&a…

常用的编程工具(汇总贴)

C/C 常用编程工具 下载地址: https://download.csdn.net/download/qq_42542620/12787822 1.codeblocks Code:blocks(codeblocks&#xff09;作为一个开源、免费、跨平台的C IDE。CodeBlocks具有完美的兼容性&#xff0c;以及美观的界面&#xff0c;其内置MinGW和MinGW5编译…

推荐给入门级的程序员,15款不一样的编程工具,易上手!

俗话说&#xff1a;巧妇难为五米之炊&#xff0c;程序员也要有好的软件&#xff0c;才会更高效率的提高自己的工作效率&#xff0c;那作为入门级别的程序员&#xff0c;几款趁手的编程软件是最需要的。除了几款基本的软件&#xff0c;其实还有很多很很酷的编程工具。接下来就为…

内存管理之预备知识--问答

2&#xff0e;CPU访问各级存储结构的速度是否一样&#xff1f; 答&#xff1a;不同级别的存储结构对于CPU的访问速度是不同的。通常来说&#xff0c;CPU访问速度最快的是寄存器&#xff0c;其次是一级缓存&#xff08;L1 Cache&#xff09;&#xff0c;二级缓存&#xff08;L2…

读数据压缩入门笔记06_上下文转换

1. 压缩算法可归为两类 1.1. 统计压缩&#xff08;即VLC&#xff09; 1.2. 字典压缩&#xff08;如LZ78&#xff09; 1.3. 从不同的角度利用了给定数据流中存在的统计冗余信息 2. 上下文变换 2.1. contextual transform 2.2. 给定一组相邻的符号集&#xff0c;对它们进行…

数据库原理与应用第6章作业

数据库原理与应用第6章作业 一. 单选题&#xff08;共12题&#xff0c;48分&#xff09;二. 填空题&#xff08;共3题&#xff0c;12分&#xff09;三. 计算题&#xff08;共2题&#xff0c;40分&#xff09; 一. 单选题&#xff08;共12题&#xff0c;48分&#xff09; (单选题…