Linux中基础开发工具(yum,vim,gcc/g++,git,gdb/cgdb)

MATLAB App Designer 实现多窗口交互与数据传递实战 本文详细介绍了如何使用MATLAB App Designer实现多窗口交互与数据传递的实战技巧。从基础的多窗口应用设计到高级的动态窗口创建,涵盖了窗口调用控制、数据传递方法、状态管理及用户体验优化等核心内容,帮助开发者高效构建复杂的MATLAB GUI应用。 阅读详情

软件包管理器

包管理器类似于我们手机的应用商店,会自动解决包的依赖的问题!
yum(Centos) apt.apt-get(ubuntu)

1.网络下载
2.安装(就是拷贝):必须使用root权限,安装到系统里,只安装一次,任何人都能使用

在这里插入图片描述

yum具体操作

查看软件包

通过yum list 命令可以罗列出当前一共有哪些软件包。由于包的数量可能非常多,我们需要使用grep命令只筛选出我们关注的包:

#Centos
$ yum list | grep lrzsz
lrzsz.x86_64 0.12.20-36.el7 @base

#Ubuntu
$ apt search lrzsz
Sorting... Done
Full Text Search... Done
cutecom/focal 0.30.3-1build1 amd64
  Graphical serial terminal, like minicom

lrzsz/focal,now 0.12.21-10 amd64 [installed]
  Tools for zmodem/xmodem/ymodem file transfer

$ apt show lrzsz
Package: lrzsz
Version: 0.12.21-10
Priority: optional
Section: universe/comm
Origin: Ubuntu
...

安装软件

通过yum,我们可以通过很简单的一条命令完成gcc的安装

# Centos
$ sudo yum install -y lrzsz

# Ubuntu
$ sudo apt install -y lrzsz

注意事项:

  • 安装软件一般需要sudo或者root账户下完成安装
  • yum/apt安装软件只能一个装完了再装另一个

卸载软件

# Centos
$ sudo yum remove [-y] lrzsz

# Ubuntu
$ sudo apt remove [-y] lrzsz

vim编译器

在这里插入图片描述
在这里插入图片描述

vim的基本操作

  • 进入vim,在系统提示符号输入vim及文件名称,就进入vim全屏幕编辑画面

$ vim test.c
进入vim后,是处于命令模式,要切换到插入模式才能输入文字

  • 命令模式 ->插入模式

输入a

进入插入模式后,是从目标光标所在位置的下一个位置开始输入文字

输入i

进入插入模式后,是从光标当前位置开始输入文件

输入o

进入插入模式后,是插入新的一行,从行首开始输入文字

  • 插入模式->命令模式

ESC

  • 命令模式->底行模式

shift+; 其实就是输入:

  • 退出vim及保存文件,在命令模式下,按:进入底行模式

:w(保存当前文件)
:wq(保存并退出vim)
:q!(不保存,强制退出vim)

命令模式

  • 移动光标
    • vim可以直接用键盘上的光标上下左右移动,但正规的vim是用小写英文字母 h、i、j、k 分别控制光标左、下、上、右移动一格
    • gg(快速回归光标)
    • G(快速定位结尾)
    • 数字+G(定位任意一行)
    • $(定位一行结尾)
    • ^(定位一行开头)
    • 数字+w(以单词为单位,向后移动)
    • 数字+b(以单词为单位,向前移动)
  • 删除文字
    • x(每按一次,删除光标所在位置的一个字符)
    • X(每按一次,删除光标所在位置的“前面”一个字符)
    • dd(删除光标所在行)
  • 复制
    • yy(复制光标所在行到缓冲区)
    • p(将缓冲区内的字符贴到光标所在位置。注意:所有与“y“有关的复制命令都必须与”p“配合才能完成复制与粘贴功能)
  • 撤销(注意:一旦退出文件编辑,无法再进行撤销了,但至少保存,没有进行退出,可以撤销)
    • u(撤销历史操作)
    • ctrl+r(撤销u操作)
  • 替换
    • r(替换光标所在字符,r->目标字符)
    • 数字+r(替换n个字符)
    • R(替换光标所在之处的字符,直到按下ESC为止
  • 大小写切换
    • shift+~

底行模式

  • 保存文件 w
  • 退出
    • q(退出)
    • q!(强制退出)
    • shift+zz(快速退出)
  • set nu/nonu (设置/取消行号)
  • %s /printf/cout/ (批量化操作。将文件中的printf全部换成cout)
  • ctrl+ww(光标切换到另一个终端)
  • vs新文件名 (打开分屏)
  • 跳到文件中的某一行
    • #(#表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行)
  • 查找字符
    • /关键字(先按/,再输入你想要寻找的字符,会向上搜索,如果第一次找的关键字不是你想要的,可以一直按n会往后寻找你要的关键字)
    • ?关键字(先按?,再输入你想要寻找的字符,会向下搜索,如果第一次找的关键字不是你想要的,可以一直按n会往前寻找你要的关键字)

gcc/g++编译器

gcc编译选项

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

预处理(进行宏替换/去注释/条件编译/头文件展开等)

  • 预处理指令是以#开头的代码行
  • 实例:gcc -E test.c -o test.i
  • 选项“-E”:开始进行程序翻译,在预处理做完就停下
  • 选项“-o”:是指目标文件,".i" 文件为已经预处理的cC原始程序

编译(生成汇编)

  • 在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言
  • 实例:gcc -S test.i -o test.s
  • 选项"-S":只进行编译而不进行汇编,生成汇编代码

汇编(生成机器可识别代码)

  • 汇编阶段是把编译阶段生成的".s" 文件转成目标文件
  • 在此时可使用选项"-c" 将汇编代码转化成".o" 的二进制目标代码
  • 实例:gcc -c test.s -o test.o

链接(生成可执行文件或库文件)

  • 在成功编译之后,就进入链接阶段
  • 实例:gcc test.o -o test

动静态库

动态库:linux(.so) windows(.dll)
静态库:linux(.a) windows(.lib)

动静态库对比

  • 动态库形成的可执行程序体积很小
  • 可执行程序对静态库的依赖性小(静态库只有在链接时有用,一旦形成可执行程序,就不需要了),动态库不能缺失
  • 程序运行,需要加载到内存,静态库会在内存中出现大量重复的代码
  • 动态链接,比较节省内存和磁盘资源
#打印程序或者库文件所依赖的共享库列表
$ ldd test
	linux-vdso.so.1 (0x00007ffe5ac9e000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc7d0f4b000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fc7d114c000)
#检查文件的路径以及名称
$ file test
test: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=ef0fbb96fabb036c5e3cbb7dc3009579628a9e48, for GNU/Linux 3.2.0, not stripped

git

git命令行安装

sudo apt install -y git
sudo yum install -y git

git 三板斧

  • git add 文件名/.
  • git commit -m "新增文件”
  • git push

补充:

  • git status (查看当前状态)
  • git log (查看日志)
  • git pull (从远端拉下来)
  • git提交的时候,只会提交变化的部分!
    在这里插入图片描述
    在这里插入图片描述

调试器-gdb/cgdb使用

铺垫

  • 程序的发布方式有2种,debug模式和release模式,linux gcc /g++ 出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项,如果没有添加,程序无法被编译

gdb下载

Ubuntu:sudo apt-get install -y cgdb
Centos: sudo yum install -y cgdb

$ gcc test.c -o test  #默认模式,不支持调试
$ gcc test.c -o test -g  #debug模式

常见使用

  • 开始:gdb binFile/可执行文件名
  • 退出:ctrl+d 或 quit 调试命令
    在这里插入图片描述

常见技巧

watch

如果有一些变量不应该修改,但是你怀疑它修改导致了问题,你可以watch它,如果变化了,就会通知你

(gdb) watch 变量名

条件断点

  • 条件断点添加常见的两种方式:1.新增 2.给已有断点追加
  • 新增语法:b 行号/文件名:行号/函数名 if i==30(条件)
  • 给已有追加语法:condition 1 i==30 ,其中1是已有断点编号,没有if
信息系统项目管理师(高项)重点! 学习高项自己做的笔记 阅读详情

相关推荐

玩转ubuntu18 --机器视觉方面(yolo算法识别及摄像头和cmake问题解决)

玩转ubuntu18 --机器视觉方面(yolo v3算法识别) 1.YOLO的简介 工作原理 先前的检测系统重新调整分类器或本地化器以执行检测。他们将模型应用于多个位置和比例尺的图像。图像的高分区域被视为检测。 我们使用完全不同的方法。我们将单个神经网络应用于整个图像。该网络将图像划分为区域,并预测每个区域的边界框和概率。这些边界框按预测概率加权。 我们的模型比基于分类器的系统具有几个优势。它在测试时间查看整个图像,因此其预测由图像中的全球上下文提供信息。它还通过单一网络评估进行预测,这与R-CNN等系统

qq_53951823的博客 1555

【Linux】基础开发工具指令汇总(yum/apt、Vim、gcc/g++、Makefile、Git、gdb/cgdb)

本文总结了Linux环境下常用开发工具的操作指南:1)yum/apt包管理器的软件查询、安装卸载命令及国内镜像源;2)Vim编辑器的三种模式切换、高效编辑命令、分屏操作和配置优化;3)gcc/g++编译器的四阶段编译流程及常用编译选项。内容涵盖软件包管理、文本编辑和代码编译三大核心开发场景,提供命令速查表和实用技巧,适合开发者快速查阅使用。

小雄的博客 1909

Anaconda安装及配置+pytorch深度学习环境(2024复旦计算机工作站0705)

Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,Pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。

ZhiYilang的博客 2347

Linux的基础开发工具

本文介绍了Linux开发环境中的常用工具链,包括:1)包管理器yum的使用与镜像源配置;2)vim编辑器的命令/底行模式操作及配置技巧;3)gcc/g++编译器的四个编译阶段(预处理/编译/汇编/链接)和动静态库区别;4)make/Makefile自动化构建工具的基本语法和变量使用;5)git版本控制的基本工作流;6)gdb/cgdb调试器的常用调试命令。文章以CentOS 7.9为基础,重点讲解了各工具的核心功能、典型用法和配置技巧,帮助开发者快速搭建高效的Linux开发环境。

博客 | 复习知识点 + 练习 + 最终的领悟 | 全力以赴 3772

CanOpen PDO映射实战:从原理到配置的完整指南

本文详细解析了CanOpen PDO映射的原理与配置流程,从基础通信机制到实战配置步骤,涵盖禁用PDO、清空映射、逐项映射和使能PDO等关键环节。特别针对西门子G120变频器、台达伺服和倍福CX控制器等不同厂商设备,提供了具体的配置技巧和常见问题排查指南,帮助工程师快速掌握多厂商设备间的PDO通信配置。

weixin_30718391的博客 515

开源大模型推理GPU资源评估以及优化

随着大模型的火热很多项目中都使用到了开源大模型,这时候准确评估大模型的GPU资源非常重要,主要有下面几个方面:GPU是昂贵的资源。高估内存需求可能导致在硬件上的不必要支出,而低估则可能导致系统故障或性能下降。:适当的内存管理确保模型高效运行,能够更快地响应用户并处理更多并发请求。:随着需求的增长,理解内存需求对于在不牺牲性能或产生高昂成本的情况下扩展服务至关重要。尽管其重要性显而易见,但计算用于服务大型语言模型(LLM)的GPU内存并不简单。

优快云DN的博客 3115

Linux——基础开发工具(上)

●在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。●但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。●软件包和软件包管理器,就好比“APP”和“应用商店”的关系。●yum(Yellow dog Updater,Modified)是Linux下非常常用的一种包管理器。

2501_93697341的博客 2115

uniapp [全端兼容] - 实现省市区选择器三四级联动组件,uniapp选择地址自定义省市区三级联动插件,弹框式多级联动选择器区域选择(全平台兼容苹果安卓App、支付宝微信小程序、移动端H5网页)

uni-app省市区选择器,省市区街道三级四级联动选择器,uniapp自定义多列选择器省市两级联动,uniapp picker组件实现多级联动,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniApp选择器省市区县街道乡镇,uniapp实现省市区选择联动,uniapp城市三级联动(自定义组件)_uniapp三级联动,picker插件省市区联动,uniapp小程序省市区选择器,uni-app 省市区街道的四级联动选择,uniapp怎样实现省市区地址三级联动uni

🏆 前端领域优质创作者 1万+

Linux系统编程 -- 开发工具

本文介绍了Linux系统下的编程开发工具链,包括软件包管理、编辑器、编译器、构建工具和调试器的使用。首先讲解了yum包管理器的安装与使用,对比了源码安装、rpm安装和包管理器安装的优劣。随后详细介绍了vim编辑器的多模式操作和常用命令,包括文本编辑、保存退出等。在编译器部分,阐述了gcc/g++的编译流程(预处理、编译、汇编、链接)和动静态库的区别。接着讲解了make/Makefile的项目自动化构建,包括依赖关系、伪目标和变量定义。还演示了命令行进度条的实现原理。最后介绍了git版本控制的基本操作

zy1215058242的博客 757

FineReport 动态列切换统计维度

目标: 自己选择统计维度进行数据的汇总统计数据集参数实现动态列。

Davina_yu的博客 1053

AUTOSAR系统服务篇 - BswM的使用

本文档是对4.0.3版及更高版本的AUTOSAR模式管理应用的介绍。其主要目的是为AUTOSAR的用户和开发人员提供基于示例的AUTOSAR模式管理不同方面的详细概述,这些示例在文中进行了解释。本文中的代码清单共同构成了示例ECU的配置。第2章解释了基础的模式管理概念,例如一般的模式、如何实现模式切换、模式管理者和模式用户的角色等。其次介绍了应用模式管理和基础软件模式管理的依赖关系,两者密切相关。基础软件模式管理器是AUTOSAR R4.0中的中央模式管理模块。它具有很高的可配置性。

IOT2017的博客 846

Linux基础开发工具

Linux系统下常用的基础开发工具,包括包管理器(yum/apt)、vim编辑器、gcc/g++编译器、自动化构建工具(make/Makefile)、Git版本控制器以及gdb/cgdb调试器。重点讲解了各工具的安装使用方法、常用命令和配置技巧,如vim的三种模式切换、gcc编译流程、makefile编写规范、Git版本控制流程以及代码调试技巧等。

2401_83009236的博客 749

18、动态系统响应分析

本文系统地介绍了动态系统响应的分析方法,涵盖传递函数建模、特殊输入下的响应特性(如脉冲和阶跃响应)、终值与初值定理的应用、系统直流增益的计算,并深入探讨了一阶和二阶系统的时域特性。通过实例分析与MATLAB仿真,展示了不同参数对系统行为的影响。文章还总结了系统响应在控制设计与故障诊断中的实际应用,并展望了多变量、非线性及实时响应分析的未来研究方向。配合流程图,提供了清晰的系统分析与设计路径。

kite3的博客 140

【Linux】基础开发工具(yum/gcc/g++/gdb/cgdb)

• 最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库⽂件中去了,在没有特别指定 时,gcc 会到系统默认的搜索路径“/usr/lib”下进⾏查找,也就是链接到 libc.so.6 库函数中去,这样 就能实现函数“printf”了,⽽这也就是链接的作⽤。• 我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该 函数的声明,⽽没有定义函数的实现,那么,是在哪⾥实“printf”函数的呢?常指的是文件最近⼀次被访问的时间。

2301_80319993的博客 1979

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux环境下的基础开发工具 -- 包管理器,vim,gcc/g++,make/makefile,git,gdb/cgdb

本文介绍了Linux开发环境中的关键工具链,包括软件包管理、代码编辑、编译构建、调试及版本控制等方面。主要内容涵盖:1)Linux软件包管理机制,对比源码安装、rpm安装和yum/apt包管理器;2)vim编辑器的三种模式及常用命令;3)gcc/g++编译流程和动静态库原理;4)make/Makefile自动化构建工具;5)基于缓冲区的进度条程序实现;6)Git版本控制基本操作;7)gdb/cgdb调试技巧如断点设置、条件断点等。通过具体实例演示了各工具的使用方法,为Linux环境下的软件开发提供了实用指南

CSQCSQCC的博客 1508

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Linux操作系统】基础开发工具

本文介绍了Linux开发中的常用工具链,包括软件包管理(yum/apt)、文本编辑器(Vim)、编译器(gcc/g++)、构建工具(make/Makefile)、进度条实现、版本控制(Git)和调试器(gdb/cgdb)。重点讲解了Vim的多模式编辑、gcc的编译流程与动静态链接区别、Makefile的自动化构建原理,以及Git的版本控制三板斧操作。这些工具构成了Linux环境下高效开发的完整工作流,帮助开发者完成从代码编写、编译构建到版本管理的全流程工作。

2401_82610555的博客 4205

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Linux】-环境开发工具

目构建这个话题说人话就是:关于你的项目和编译的话题。对于项目构建的话题,一直用 VS 的同学可能会感叹道:" 诶……我就从来就没这样的困扰,我在 VS 下创建多文件,运行直接特喵的 Ctrl + F5 就完事了 "确实,编译时你需要按个键就能做到编译调试运行,编译个项目真的轻轻松松。那是因为编译器在替你负重前行, VS 会帮你自动维护了对应的项目结构!上述问题你在 VS 下压根就没关心过,因为 VS 下都帮我们屁股擦得干干净净 ~你只需要在你的 VS 下需要就创建,需要就创建。

x3262551980的博客 1799

【Linux】基础开发工具

本文介绍了Linux基础开发工具的使用,主要包括:1)软件包管理器yum的安装/卸载;2)编辑器vim的基本概念、操作命令和配置方法;3)编译器gcc/g++的编译流程、动态库/静态库的区别;4)自动化构建工具make/Makefile的使用规则和特殊指令。文章提供了详细的命令示例和配置方法,并特别给出了CentOS和Ubuntu系统下一键安装vim的快捷命令,适合Linux初学者快速掌握基础开发工具的使用。

铭哥不写bug的博客 1074

Linux(二) : 基础开发工具

本文将详细介绍 Linux 中最常用和最核心的开发工具,包括软件包管理器、文本编辑器、编译器、自动化构建工具、版本控制器以及调试器,旨在为您提供一个全面的学习和参考指南。

Grookin的博客 2286

我是贝尔格里尔斯,我要向你展示如何入门并熟练掌握世界上最难的操作系统之一linux,这里遍布着数不清的指令,以及完全脱离图形化的界面,没有高超的学习技巧,甚至连一秒都坚持不下去--基础开发

如上就是我们在开发过程中所用到的开发工具,我们学习了yum的软件包安装,了解了vim编辑器的运用,掌握了makefiel自动化构建的运用,以及了解git三板斧和cgdb的调试器。博客知识一种对知识点的总结和归纳,我们需要需要在日常中不断的使用,才能熟练的掌握这些开发用的使用及其技巧。

2302_81813630的博客 2273

Linux-基础开发工具

基础开发工具 软件包管理器 Vim gcc/g++ make/Makegile Git gdb/cgdb

forccct的博客 1134

Linux中基础开发工具详细介绍

• 在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进⾏编译, 得到可执⾏程序.• 但是这样太麻烦了, 于是有些⼈把⼀些常⽤的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在⼀个服务器上, 通过包管理器可以很⽅便的获取到这个编译好的软件包, 直接进⾏安装.• 软件包和软件包管理器, 就好⽐ “App” 和 “应⽤商店” 这样的关系.

zxybf_的博客 1001

Linux系统编程—基础开发工具

三种模式正常模式插入模式底行模式vim操作打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。

Awkwardx的博客 735

Linux:基础开发工具

CC=gccFLAGS=-oRM=rm -f.PHONY:clean:这些都是定义变量,这里定义了5个变量使用方法:$(变量名)这样也可以做到一样的效果,具体好处就和平时写代码的宏定义差不多。

2301_80655639的博客 1327
上一篇: Linux常用指令
下一篇: 【Linux系统】自动化构建——make/makefile
Tangcan-
博客等级 码龄3年 664粉丝 91原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值