Linux常用编程工具

news/2024/7/21 14:30:04 标签: linux, vim

文章目录

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


前言

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

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

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

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

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

vim_linux_23">二、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,这些还是希望大家可以多多练习,毕竟这个真的是熟能生巧,动手跟着操作肯定比干瞪眼的效果会好的更多,加油!!!大家一起共同进步!!!!冲!!!!


http://www.niftyadmin.cn/n/840611.html

相关文章

go语言使用go-sciter创建桌面应用(六) Element元素操作和Event事件响应

详细的文档请看下面两个链接&#xff1a; https://sciter.com/docs/content/sciter/Element.htm https://sciter.com/docs/content/sciter/Event.htmdemo8.html代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"…

编写desktop文件_第一章(第4节):安装Appium-Desktop

上节课给大家介绍了 Appium-Server 和 Appium-Desktop 的区别&#xff0c;对于这两个软件你只需要使用一个, 具体使用哪个&#xff0c;一切根据你的喜好。本节我们学习 Appium-Desktop 的安装和使用方法。Appium-Desktop 下载与安装Appium-Desktop 下载地址&#xff1a;这里根据…

centos7挂载ntfs文件系统_Windows——挂载远程Linux文件系统,远程办公利器

序新冠肺炎疫情仍继续影响着我们的复工上班&#xff0c;因此今天来介绍一个远程办公的好工具——SSHFS&#xff0c;在本地Windows系统中挂载远程Linux的文件系统&#xff0c;实现直接管理、读写远程目录。SSHFSSSHFS是从SFTP建立的安全的远程文件系统访问协议。与CIFS、Samba共…

memcache安装配置

一、memcache说明memcached是一套开源分布式的高速缓存系统&#xff0c;memcached缺乏认证以及安全管制&#xff0c;这代表应该将memcached服务器放置在防火墙之后&#xff0c;以确保安全。系统环境&#xff1a;CentOS6.8_x64二、安装1、安装gccyum install -y wget gcc2、下载…

wince系统改安卓系统_自研有了?小米MIUI魔改安卓成功,米粉:不输苹果iOS

最近有关Redmi Note 9系列的消息层出不穷&#xff0c;很多人看到它的配置后都说“买相机送手机”&#xff0c;可见作为千元机&#xff0c;Redmi Note 9的1亿像素有多么惊艳。不过&#xff0c;对于米粉们而言&#xff0c;选择Redmi Note 9系列的原因除了它的1亿像素外&#xff0…

联发科p60和骁龙710哪个好_骁龙710、麒麟710和联发科P60性能对比测试 哪个好?...

今年中端移动平台竞争格外激烈,突出表现在今年高通发布了多款中端移动Soc,另外不敢落后的华为也发布了一款麒麟710处理器,而联发科还是凭借Helio P60占比部分市场。今天为大家带来了骁龙710、麒麟710和联发科P60性能对比测试,想知道骁龙710、麒麟710和联发科P60哪个好的小伙…

C++this指针概要

Cthis指针概要 文章目录Cthis指针概要前言一、引出this指针二、 那么this指针是什么&#xff1f;三、this指针的特性总结前言 今天只有一个内容&#xff0c;这是C中最最最最重要的知识点的其中之一&#xff0c;希望我可以说的明白&#xff0c;可以让大家有所收获 一、引出thi…

记一次OGG数据写入HBase的丢失数据原因分析

一、现象二、原因排查2.1 SparkStreaming程序排查2.2 Kafka数据验证2.3 查看OGG源码2.3.1 生成Kafka消息类2.3.2 Kafka配置类2.3.3 Kafka 消息发送类2.3.4 Kafka 分区获取方式三、结论一、现象 目前我们的数据是通过OGG->Kafka->Spark Streaming->HBase。由于之前我们…