Linux开发工具详解
-
-
- [1. 引言💦](#1. 引言💦)
- [2. Linux软件包管理器:Yum](#2. Linux软件包管理器:Yum)
- [3. Linux编辑器:Vim](#3. Linux编辑器:Vim)
- [4. Linux编译器:GCC/G++](#4. Linux编译器:GCC/G++)
- [5. Linux调试器:GDB](#5. Linux调试器:GDB)
- [6. Linux项目自动化构建工具:Makefile](#6. Linux项目自动化构建工具:Makefile)
- [7. 第一个Linux程序:进度条](#7. 第一个Linux程序:进度条)
- [8. 版本控制系统:Git](#8. 版本控制系统:Git)
-
1. 引言💦
在Linux系统上进行开发,掌握和使用合适的工具能够大大提高开发效率和代码质量。本文将详细介绍几种常用的Linux开发工具,包括软件包管理器Yum、编辑器Vim、编译器GCC、调试器GDB、构建工具Makefile以及版本控制系统Git。通过这些工具的使用,你将能够更高效地进行软件开发和维护。
2. Linux软件包管理器:Yum
什么是软件包
在Linux系统中,软件包是预先编译好的程序集合,类似于Windows上的安装程序。使用软件包管理器如Yum,可以方便地安装、更新和卸载软件包,而无需手动编译源代码。
安装和卸载软件
要安装软件包,可以使用如下命令:
sh
sudo yum install package_name
例如,安装lrzsz
软件包:
sh
sudo yum install lrzsz
要卸载软件包,可以使用以下命令:
sh
sudo yum remove package_name
例如,卸载lrzsz
软件包:
sh
sudo yum remove lrzsz
rzsz工具
rzsz
工具用于在Windows机器和远程Linux机器之间通过XShell传输文件,安装完成后可以通过拖拽的方式将文件上传。
3. Linux编辑器:Vim
Vim的基本概念
Vim是vi的增强版,是一种多模式编辑器。Vim有三种基本模式:命令模式、插入模式和末行模式。命令模式用于移动光标和删除文本,插入模式用于文本输入,末行模式用于保存文件和退出Vim。
Vim的基本操作
进入Vim编辑一个文件:
sh
vim filename
在命令模式下,按下i
、a
或o
进入插入模式进行文本输入。按下ESC
键返回命令模式。按:
进入末行模式,可以保存文件或退出Vim。
常用命令包括:
sh
: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
(用户级)。常用配置包括:
vim
syntax on " 启用语法高亮
set nu " 显示行号
set shiftwidth=4 " 设置缩进为4个空格
4. Linux编译器:GCC/G++
编译过程详解
GCC的编译过程分为四个阶段:预处理、编译、汇编和链接。
-
预处理:宏替换、文件包含、条件编译和去注释
shgcc -E hello.c -o hello.i
-
编译:将代码转换为汇编语言
shgcc -S hello.i -o hello.s
-
汇编:将汇编代码转换为目标代码
shgcc -c hello.s -o hello.o
-
链接:生成可执行文件或库文件
shgcc 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示例:
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中,标准输出是行缓冲的,输出会在遇到换行符时刷新缓冲区。因此,制作进度条时需要手动刷新缓冲区。
进度条代码实现
c
#include <stdio.h>
#include <unistd.h>
#include <string.h>
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:
sh
yum install git
使用Git管理项目
-
初始化Git仓库:
shgit init
-
将文件添加到暂存区:
shgit add filename
-
提交改动:
shgit commit -m "commit message"
-
推送到远程仓库:
shgit push origin master
将项目上传至GitHub
-
注册GitHub账号并创建新仓库。
-
克隆仓库到本地:
shgit clone repository_url
-
添加文件并提交:
shgit add . git commit -m "initial commit" git push origin master