linux下的yum,vim,gcc,gdb

2023-05-16

我们在windows系统下我们能够很简单进行粘贴复制下载安装,也能通过vs进行我们缩写代码的编译运行,但是我们在linux下我们应该怎样去操作我们的这些命令呢,这章我们就讲解一下我们linux下常用的一些工具

1- yum

yum是centos版本的linux系统下的软件管理工具,常见的命令如下:
    1. yum list查看我们在linux系统下安装的文件,安装包
    1. yum list installed查看我们linux下的已经安装程序
    1. yum install poket_name 安装poket_name程序
    1. yum remove poket_name 卸载我们安装的poket_name程序

2- vim

	vim是我们的编辑器,它总共有12中编辑模式,但是常用的只有大概三种,普通模式,插入模式,底行模式。
  • 普通模式:完成普通命令基本命令

  • 插入模式:向文件中插入数据

  • 底行模式:退出保存编辑 vim设置等

普通模式到插入模式常用命令:

  • a/A/i/I/o/O
    a:是光标向下移动一个进行操作
    A:光标移动到行尾进行操作
    i:在当前光标下进行操作
    I:光标移动到行首进行操作
    o:光标像下一行(新插入的一行)
    O:光标向上一行(同样是增加的新行)

普通模式下光标移动命令

  • H:光标向左移动
  • J:光标向下移动
  • K:光标向上移动
  • L:光标向右移动
  • W:向右移动一个单词
  • B:向左移动一个单词
    复制/粘贴/删除/撤销操作
  • 复制:YY复制光标所在行的数据 nYY复制光标所在行以及光标一下的n行(这里的n是包括了光标所在行)
  • 粘贴:p:在光标所在行下方建新行进行插入操作 P:在光标所在上一行新建行插入数据
  • 删除:x:删除光标所在字符 dw:删除光标所在位置往后一个单词 dd:删除光标所在行的数据 ndd:删除光标所在行以及以下的n-1行。
  • 撤销:u
  • 反撤销:ctrl R

3- gcc

gcc:将代码编译生成二进制文件(机器指令代码)
明白这个我们需要了解一个c程序的编译过程,在这里我们不详诉
参考c经过了什么才到exe文件
常用命令:

  • -E :进行预处理
  • -S:只进行编译
  • -c:值进行会变过程
  • -o:生成指定文件名称
  • -static:静态链接
  • -g生成debug版本进行调试

4-gdb

在vs上我们能够轻松的进行我们调试过程,在linux下我们同样也需要这些步骤,在我们发生错误的时候我们需要快速的定位到我们程序出现bug的地方,并且去修改它
在一般的调试中我们可以分为:单步调试,打断点,查看调用栈信息
进入到gdb模式的两种方法:

  • 直接对文件调试gdb filename
  • 先进入到gdb,然后输入文件进行调试 gdb file ./namefile

首先我们认识一下基本的命令:

  • r(run)运行程序
    此时我们运行程序如果在没有错的时候就直接run到底,但是我们调试的目的就是找到我们的bug,所有我们并不能将程序直接run,
    基本单步调试命令:

  • start:开始单步调试

  • n:下一步(但是不进入函数)

  • s:下一步(追踪进入函数中)

  • until: 文件名:行号 直接运行到指定文件指定行号的位置

  • l:查看此时调试行所在附近的代码,+n调试行所在附近n行代码,l filename:pos查看指定文件指定行的附近的代码

打断点基本命令:

  • b pos/filename:pos 在指定位置/指定文件指定位置打断点
  • b 函数名:给指定的函数打断点
  • i(infor)查看调试信息
  • i b:查看断点信息
  • d num:删除断电
  • d:删除所有的断电
  • c:继续运行(从停止出继续运行)
  • p:查看变量信息
  • watch:实行变量监控

快速定位(查看调用栈信息)

  • bt:查看函数调用栈信息

我们在linux下编程这些都是我们必不可少的一些东西,希望同学们能够快速的掌握并熟练的使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux下的yum,vim,gcc,gdb 的相关文章

  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • Docker DNS 设置

    我尝试使用自定义网络和 dos 设置创建 docker 容器 docker网络创建 driver bridge opt com docker network bridge enable ip masquerade true opt com
  • 后缀和前缀运算符作为函数参数 - 为什么会发生这种情况? [复制]

    这个问题在这里已经有答案了 在执行以下简单的 C 程序时 我发现了一个非常有趣的事实 include
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • 使用命令行将 MediaWiki 维基文本格式转换为 HTML

    我倾向于编写大量文档 因此 MediaWiki 格式对我来说很容易理解 而且比编写传统 HTML 节省了我很多时间 然而 我也写了一篇博客 发现一直从键盘切换到鼠标来输入正确的 HTML 标签会增加很多时间 我希望能够使用 Mediawik
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • 什么定义了类型的大小?

    ISO C 标准规定 sizeof char lt sizeof short lt sizeof int lt sizeof long 我在 BIT Linux mint 19 1 上使用 GCC 8 大小为long int is 8 我正
  • 禁用 VIM 中的警告?

    有没有办法禁用 VIM 中的警告 特别是 当文件从只读变为可写时 我想禁用警告 12 我有一个脚本可以打开文件进行编辑 但 vim 认为文件已更改并发出警告 Thanks 我的 vimrc 中有以下内容 你应该只需要第二个 它将消息回显到状
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • perf stat中的cycles注释是什么意思

    8 014196 task clock 0 004 CPUs utilized 204 context switches 0 025 M sec 32 cpu migrations 0 004 M sec 0 page faults 0 0
  • 是否从页面缓存中的脏页面进行文件读取?

    当字节写入文件时 内核不会立即将这些字节写入磁盘 而是将这些字节存储在页缓存中的脏页中 回写缓存 问题是 如果在脏页刷新到磁盘之前发出文件读取 则将从缓存中的脏页提供字节 还是首先将脏页刷新到磁盘 然后进行磁盘读取以提供字节 将它们存储在进
  • 如何确保 numpy BLAS 库可用作动态加载库?

    The theano安装文档 http www deeplearning net software theano install html troubleshooting make sure you have a blas library指
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 'goto *foo' 其中 foo 不是指针。这是什么?

    我正在玩标签作为值 https gcc gnu org onlinedocs gcc Labels as Values html并最终得到这段代码 int foo 0 goto foo 我的 C C 经验告诉我 foo means dere
  • C 中的 N 依赖注入 - 比链接器定义的数组更好的方法?

    Given a 库模块 在下文中称为Runner 它作为可重复使用的组件 无需重新编译 即静态链接库 中应用程序分区架构的 而不是主分区 请注意 它仅包含main 出于演示目的 Given a set 顺序无关 调用的其他模块 对象Call

随机推荐