【Linux】|开发工具介绍 | yum |vim | gcc/g++ | gdb | git
创始人
2025-01-11 05:36:09
0

Linux开发工具详解

      • 1. 引言💦
      • 2. Linux软件包管理器:Yum
        • 什么是软件包
        • 安装和卸载软件
        • rzsz工具
      • 3. Linux编辑器:Vim
        • Vim的基本概念
        • Vim的基本操作
        • Vim模式和命令集🐳
        • Vim配置
      • 4. Linux编译器:GCC/G++
        • 编译过程详解
        • ==编译器的自举==
        • 函数库:静态库和动态库
        • GCC常用选项
      • 5. Linux调试器:GDB
        • GDB的基本使用
        • 调试命令详解
      • 6. Linux项目自动化构建工具:Makefile
        • Makefile的基本概念
        • Makefile的编写实例
        • 自动化编译和项目清理
      • 7. 第一个Linux程序:进度条
        • 行缓冲区概念
        • 进度条代码实现
      • 8. 版本控制系统:Git
        • Git的安装与配置
        • 使用Git管理项目
        • 将项目上传至GitHub


1. 引言💦

在Linux系统上进行开发,掌握和使用合适的工具能够大大提高开发效率和代码质量。本文将详细介绍几种常用的Linux开发工具,包括软件包管理器Yum、编辑器Vim、编译器GCC、调试器GDB、构建工具Makefile以及版本控制系统Git。通过这些工具的使用,你将能够更高效地进行软件开发和维护。


2. Linux软件包管理器:Yum

什么是软件包

在Linux系统中,软件包是预先编译好的程序集合,类似于Windows上的安装程序。使用软件包管理器如Yum,可以方便地安装、更新和卸载软件包,而无需手动编译源代码。

安装和卸载软件

要安装软件包,可以使用如下命令:

sudo yum install package_name 

例如,安装lrzsz软件包:

sudo yum install lrzsz 

要卸载软件包,可以使用以下命令:

sudo yum remove package_name 

例如,卸载lrzsz软件包:

sudo yum remove lrzsz 
rzsz工具

rzsz工具用于在Windows机器和远程Linux机器之间通过XShell传输文件,安装完成后可以通过拖拽的方式将文件上传。


3. Linux编辑器:Vim

Vim的基本概念

Vim是vi的增强版,是一种多模式编辑器。Vim有三种基本模式:命令模式、插入模式和末行模式。命令模式用于移动光标和删除文本,插入模式用于文本输入,末行模式用于保存文件和退出Vim。

Vim的基本操作

进入Vim编辑一个文件:

vim filename 

在命令模式下,按下iao进入插入模式进行文本输入。按下ESC键返回命令模式。按:进入末行模式,可以保存文件或退出Vim。

常用命令包括:

:w  # 保存文件 :q  # 退出Vim :wq # 保存并退出 :q! # 强制退出不保存 
Vim模式和命令集🐳

在这里插入图片描述


  • 命令模式:用于光标移动和文本操作

    • h 左移光标,j 下移光标,k 上移光标,l 右移光标
    • dd 删除整行,yy 复制整行,p 粘贴
  • 插入模式:用于文本输入

    • i 光标前插入,a 光标后插入,o 新行插入
  • 末行模式:用于保存和退出

    • :w 保存文件,:q 退出Vim,:wq 保存并退出,:q! 强制退出
Vim配置

Vim的配置文件位于/etc/vimrc(系统级)和~/.vimrc(用户级)。常用配置包括:

syntax on      " 启用语法高亮 set nu        " 显示行号 set shiftwidth=4 " 设置缩进为4个空格 

4. Linux编译器:GCC/G++

编译过程详解

GCC的编译过程分为四个阶段:预处理、编译、汇编和链接。

  • 预处理:宏替换、文件包含、条件编译和去注释

    gcc -E hello.c -o hello.i 

    在这里插入图片描述

  • 编译:将代码转换为汇编语言

    gcc -S hello.i -o hello.s 
  • 汇编:将汇编代码转换为目标代码

    gcc -c hello.s -o hello.o 
  • 链接:生成可执行文件或库文件

    gcc hello.o -o hello 
    编译器的自举

在这里插入图片描述

函数库:静态库和动态库
  • 静态库:编译时将库文件代码加入可执行文件中,生成的文件较大,但运行时不需要库文件。

    • 静态库文件后缀为.a
  • 动态库:编译时不将库文件代码加入可执行文件中,运行时由运行时链接器加载库文件,节省系统资源。

    • 动态库文件后缀为.so
GCC常用选项
  • -E:仅进行预处理
  • -S:仅进行编译生成汇编代码
  • -c:仅进行编译生成目标代码
  • -o:指定输出文件
  • -g:生成调试信息
  • -O0, -O1, -O2, -O3:优化选项,级别从0到3

5. Linux调试器:GDB

GDB的基本使用

GDB用于调试程序,可以设置断点、单步执行、查看变量等。使用GDB调试程序时,需要在编译时加上-g选项。

调试命令详解
  • gdb binFile:启动GDB并加载可执行文件
  • run:运行程序
  • break 行号break 函数名:设置断点
  • next:单步执行
  • step:进入函数
  • print 表达式:打印表达式的值
  • continue:继续执行
  • quit:退出GDB

6. Linux项目自动化构建工具:Makefile

Makefile的基本概念

Makefile定义了一系列规则来指定文件的编译顺序和依赖关系,实现自动化编译。Make工具解释Makefile中的指令。

Makefile的编写实例

一个简单的Makefile示例:

hello: hello.o     gcc hello.o -o hello  hello.o: hello.c     gcc -c hello.c -o hello.o  clean:     rm -f hello hello.o 
自动化编译和项目清理
  • 依赖关系:Make根据文件的时间戳确定哪些文件需要重新编译。
  • 伪目标:如clean,用.PHONY声明,执行make clean进行项目清理。

7. 第一个Linux程序:进度条

行缓冲区概念

在Linux中,标准输出是行缓冲的,输出会在遇到换行符时刷新缓冲区。因此,制作进度条时需要手动刷新缓冲区。

进度条代码实现
#include  #include  #include   int main() {     int i = 0;     char bar[102];     memset(bar, 0, sizeof(bar));     const char *lable = "|/-\\";     while (i <= 100) {         printf("[%-100s][%d%%][%c]\r", bar, i, lable[i % 4]);         fflush(stdout);         bar[i++] = '#';         usleep(10000);     }     printf("\n");     return 0; } 

8. 版本控制系统:Git

Git的安装与配置

使用Yum安装Git:

yum install git 
使用Git管理项目
  1. 初始化Git仓库:

    git init 
  2. 将文件添加到暂存区:

    git add filename 
  3. 提交改动:

    git commit -m "commit message" 
  4. 推送到远程仓库:

    git push origin master 
将项目上传至GitHub
  1. 注册GitHub账号并创建新仓库。
  2. 克隆仓库到本地:
    git clone repository_url 
  3. 添加文件并提交:
    git add . git commit -m "initial commit" git push origin master 

上一篇:日常学习-20240710

下一篇:会话固定攻击

相关内容

热门资讯

突发!wepoker买钻石有用... 突发!wepoker买钻石有用吗,德扑之心免费透视,好像真的有挂(有挂教学)1)德扑之心免费透视免费...
相较于以往!wepoker私人... 相较于以往!wepoker私人局外卦,德普之星透视辅助,本来是真的有挂(有挂功能);1)德普之星透视...
长期以来!购买wepoker模... 长期以来!购买wepoker模拟器,德扑之心免费透视,一贯真的是有挂(竟然有挂)1、完成德扑之心免费...
这一问题亟待解决!wepoke... 这一问题亟待解决!wepoker轻量版有透视吗,如何下载德普之星辅助软件,本来确实有挂(有挂方针)1...
有消息称!wpk私人辅助,如何... 有消息称!wpk私人辅助,如何下载德普之星辅助软件,确实是真的有挂(有挂细节)1、如何下载德普之星辅...
技巧辅助挂!wepoker有辅... 技巧辅助挂!wepoker有辅助功能吗,德扑之星透视,切实真的有挂(有挂技巧)1、德扑之星透视辅助器...
为了进一步!hhpoker德州... 为了进一步!hhpoker德州机器人,德普之星辅助器,真是确实有挂(有挂技术)1、实时德普之星辅助器...
截至发稿!wpk真的有透视嘛,... 截至发稿!wpk真的有透视嘛,德普之星怎么开辅助,其实是有挂(有挂解惑)1、用户打开应用后不用登录就...
技巧辅助挂!xpoker辅助神... 技巧辅助挂!xpoker辅助神器,德扑软件,一贯存在有挂(真的有挂)1、进入到德扑软件是否有挂之后,...
受玩家影响!wepoker私人... 受玩家影响!wepoker私人辅助器,智星菠萝可以辅助吗,原来是真的有挂(有挂工具)小薇(辅助器软件...