Linux | Linux开发工具链全攻略:yum、vim、gcc/g++、GDB、Makefile与git版本控制

[复制链接]
发表于 前天 11:10 | 显示全部楼层 |阅读模式
目次
Linux开发环境全剖析:工具、编程与版本控制
1、软件包管理器YUM
查察可用的软件包
安装软件包
更新软件包
卸载软件包
查找软件包信息
清算缓存
查抄可更新的软件包
表现软件包的依靠关系
2、Vim编辑器
vim的三种模式:下令模式、插入模式、底行模式
vim下令:
常用指令默写:
3、gcc/g++编译器
一键编译步调
预处理处罚
天生汇编代码
编译为目标代码
链接天生可实验文件
天生调试信息
优化选项
克制告诫信息
生玉成部告诫信息
4、GDB调试器
1. 编译带调试信息的步调
2. 启动GDB
3. 设置断点
4. 运行步调
5. 查抄步调状态
6. 单步实验
7. 修改和继承
8. 退出GDB
增补:常用GDB下令
5、Makefile自动化构建
Makefile的根本布局
示例Makefile
Makefile的关键概念
自动化构建的上风
6、利用Git举行版本控制
1. 利用刚学的yum安装Git
2. 初始化堆栈
3. 添加文件到堆栈
4. 提交更改
5. 查察状态
6. 查察提交汗青
7. 创建分支
8. 切换分支
9. 归并分支
10. 办理归并辩说
11. 推送到长途堆栈
12. 拉取长途更改
13. 标签管理
14. 取消利用


Linux开发环境全剖析:工具、编程与版本控制

Linux开发环境的强盛之处在于其丰富的工具链和机动的自动化本事。从YUM到Vim,从gcc到GDB,再到Makefile和Git,每一个工具都是构建高效开发流程的基石。盼望本文能资助读者快速把握Linux开发环境,开启高效编程之旅。

1、软件包管理器YUM

YUM(Yellow dog Updater, Modified)是Linux发行版如Fedora, RedHat, CentOS等的常用包管理器。它允许用户方便地安装、更新和管理软件包。利用yum list可以查察可安装的软件包,并通过yum install和yum remove下令来安装和卸载软件。常见的yum下令如下:
查察可用的软件包

利用yum list下令可以列出全部可用的软件包。假如须要查找特定的软件包,可以联合grep下令利用,比方:
  1. yum list | grep vim
复制代码
安装软件包

安装软件包可以通过yum install下令完成,比方安装Vim编辑器:
  1. sudo yum install vim
复制代码
更新软件包

利用yum update下令可以更新全部可更新的软件包:
  1. sudo yum update
复制代码
大概更新特定的软件包:
  1. sudo yum update vim
复制代码
卸载软件包

卸载软件包利用yum remove下令,比方卸载Vim:
  1. sudo yum remove vim
复制代码
查找软件包信息

yum info下令可以表现软件包的详细信息,比方:
  1. yum info vim
复制代码
清算缓存

YUM在当地会缓存软件包信息,利用yum clean下令可以清算这些缓存,比方:
  1. sudo yum clean all
复制代码
查抄可更新的软件包

yum check-update下令可以列出全部有更新的软件包:
  1. yum check-update
复制代码
表现软件包的依靠关系

yum deplist下令可以表现已安装软件包的依靠关系,比方:
  1. yum deplist vim
复制代码




2、Vim编辑器

Vim是Linux下强盛的文本编辑器,支持多种模式,包罗下令模式、插入模式和底行模式。Vim的根本利用涵盖了文本的插入、删除、复制、粘贴等。别的,Vim的设置可以通过.vimrc文件举行个性化设置,加强编辑体验。


vim的三种模式:下令模式、插入模式、底行模式


  • 下令模式(Normal Mode)

    • 这是Vim启动后的默认模式。
    • 在此模式下,你可以实验移动光标、查找文本、复制和粘贴文本块等下令,但不能直接输入文本。
    • 可以通过按Esc键从其他模式返回到下令模式。

  • 插入模式(Insert Mode)

    • 在下令模式下按下i、a、o等插入下令键后,进入插入模式。
    • i:在当前光标位置插入文本。
    • a:在当前光标后插入文本(即在光标所在字符之后)。
    • o或O:在当前行的下方(o)或上方(O)新开一行并插入文本。
    • 在插入模式下,你可以输入文本,就像利用其他文本编辑器一样。

  • 底行模式(Last Line Mode 或 Command Line Mode)

    • 通过在下令模式下按下:键进入底行模式。
    • 此模式用于输入下令,如生存文件(:w)、退出Vim(:q)、查找和更换文本等。
    • 底行模式下的下令通常以:开头,然后是下令的详细参数。


vim下令:

移动/跳转
「ctrl」+「b」:屏幕往“后”移动一页
「ctrl」+「f」:屏幕往“前”移动一页
[gg]:进入到文本开始
[shift+g]:进入文本末了
「ctrl」+「g」列出文本总行及当前位置
「#G」:比方,「15G」,体现移动光标至文章的第15行行首
删除笔墨
「x」:每按一次,删除光标所在位置的一个字符(向后删除)
「dd」:删除光标所在行
「nD」:删除n行
复制粘贴
「yy」:复制光标所在行到缓冲区。
「#yy」:比方,「6yy」体现拷贝从光标所在的该行“往下数”6行笔墨。
「p」:将缓冲区内的字符贴到光标所在位置。注意:全部与“y”有关的复制下令都必须与“p”共同才气完
成复制与粘贴功能
取消
「u」:假如您误实验一个下令,可以立即按下「u」,回到上一个利用。按多次“u”可以实验多次复兴。
「ctrl + r」: 取消的规复
退出vim步调
w:生存当前文件
q:退出vim步调
!:欺压实验
可以组合利用

常用指令默写:

👋
移动/跳转
「ctrl」+「b」:屏幕往“后”移动一页
「ctrl」+「f」:屏幕往“前”移动一页
[gg]:进入到文本开始
[shift+g]:进入文本末了
「ctrl」+「g」列出文本总行及当前位置
「#G」:比方,「15G」,体现移动光标至文章的第15行行首

「yy」:复制光标所在行到缓冲区
「p」:将缓冲区内的字符贴到光标所在位置
「dd」:删除光标所在行
「u」:取消
「ctrl + r」: 取消的规复

3、gcc/g++编译器

gcc/g++是Linux下的C/C++编译器,支持预处理处罚、编译、汇编和链接四个阶段。通过差别的选项,如-E、-S、-c和-o,用户可以控制编译过程的每一步。别的,优化选项-O0到-O3允许用户根据须要调解代码的优化级别。
拓展:死代码删除是编译最优化技能,指的是移除根本实验不到的代码,大概对步调运行效果没有影响的代码,而并不是删除被表明的代码。
一键编译步调

要编译C步调,可以利用以下下令:
  1. gcc hello.c -o hello
复制代码
这里,hello.c是源文件,-o hello指定输出的可实验文件名为hello。
编译C++步调时,利用g++取代gcc
  1. g++ hello.cpp -o hello
复制代码
hello.cpp是C++源文件。
预处理处罚

利用-E选项举行预处理处罚,该选项只实验宏更换等预处理处罚利用,不天生目标文件:
  1. gcc -E hello.c -o hello.i
复制代码
这将天生hello.i预处理处罚文件。
天生汇编代码

利用-S选项天生汇编代码,不举行后续的编译和链接:
  1. gcc -S hello.i -o hello.s
复制代码
这将天生hello.s汇编文件。
编译为目标代码

利用-c选项编译源文件为目标代码(.o文件):
  1. gcc -c hello.s -o hello.o
复制代码
这将天生hello.o目标文件。
链接天生可实验文件

链接目标文件天生可实验文件:
  1. gcc hello.o -o hello
复制代码
假如hello.o依靠于其他库,可以在下令中指定库。
静态链接
利用-static选项举行静态链接,天生的可实验文件将包罗全部须要的库代码:
  1. gcc -static hello.o -o hello
复制代码
条记:预处理处罚 编译 汇编 链接 是编译的四个环节
对应的下令选项是ESc (键盘左上角)
天生的文件后缀是ISO (重装体系的磁盘文件后缀)
天生调试信息

利用-g选项天生调试信息,这将资助调试器如GDB更好地分析步调:
  1. gcc -g hello.c -o hello
复制代码
条记:gcc编译器默认天生的可实验步调是release版本,无法调试。假如盼望利用gdb调试器举行调试(后文有先容),就须要利用-g天生debug版本文件。
优化选项

编译器提供差别的优化级别:


  • -O0:没有优化。
  • -O1:启用根本优化(默认)。
  • -O2:进一步优化。
  • -O3:最高级别的优化。
  1. gcc -O2 hello.c -o hello
复制代码
克制告诫信息

利用-w选项可以克制全部告诫信息:
  1. gcc -w hello.c -o hello
复制代码
生玉成部告诫信息

利用-Wall选项生玉成部告诫信息:
  1. gcc -Wall hello.c -o hello
复制代码

4、GDB调试器

GDB是Linux下用于步调调试的工具,支持设置断点、单步实验、查察变量值等。利用-g选项编译步调可以天生调试信息,使GDB可以或许更好地分析步调。
利用GDB调试步调的一样平常流程
1. 编译带调试信息的步调

利用-g选项编译步调,确保天生的可实验文件包罗调试信息。
  1. // your_source_file.c
  2. #include <stdio.h>
  3. int main() {
  4.     int a = 5;
  5.     int b = a + 10; // 可能存在错误
  6.     printf("The result is: %d\n", b);
  7.     return 0;
  8. }
复制代码
编译下令:
  1. gcc -g -o your_program your_source_file.c
复制代码
2. 启动GDB

运行GDB并加载你的步调。
  1. gdb ./your_program
复制代码
3. 设置断点

在步调的main函数入口处设置断点,大概在大概堕落的代码行设置断点。
  1. break main
复制代码
大概
  1. break your_source_file.c:4
复制代码
(假设第4行是b = a + 10;)
4. 运行步调

实验run下令开始实验步调,直到碰到断点。
  1. run
复制代码
5. 查抄步调状态

利用print下令查抄变量的值,利用info locals查察当前函数的局部变量。
  1. print a
  2. print b
  3. info locals
复制代码
6. 单步实验

利用next下令实验下一行代码,利用step进入函数内部。
  1. next  // 执行下一行代码,不进入函数
  2. step  // 如果当前行是函数调用,进入该函数
复制代码
7. 修改和继承

假如须要,可以修改变量的值,并利用continue下令继承实验。
  1. set var a=10
  2. continue
复制代码
8. 退出GDB

利用quit下令退出GDB。
  1. quit
复制代码
这些步调提供了一个根本的GDB调试流程。在实际利用中,你大概须要根据步调的详细环境调解断点的位置、查抄的变量等。纯熟把握这些下令将有助于你更有用地调试步调。
增补:常用GDB下令



  • run 或 r:运行步调。
  • break 或 b [line|function]:在指定的行号或函数处设置断点。
  • continue 或 c:从断点处继承实验步调。
  • next 或 n:实验下一行代码,假如当前行是一个函数调用,则实验该函数的下一行代码。
  • step 或 s:进入当前行的函数内部,假如该行是一个函数调用。
  • until 或 u [line]:继承实验步调,直到到达指定的行号。
  • print 或 p [expression]:打印变量或表达式的值。
  • list 或 l:表现源代码,可以指定行号或函数名。
  • backtrace 或 bt:表现当前的调用栈。
  • frame 或 f [frame number]:选择一个新的栈帧。
  • up:选择上一个栈帧(向调用者方向)。
  • down:选择下一个栈帧(向被调用者方向)。
  • info locals:表现当前栈帧的局部变量。
  • info args:表现当前栈帧的参数。
  • info breakpoints 或 info b:列出全部断点。
  • delete [breakpoint number]:删除指定的断点。
  • disable [breakpoint number]:禁用指定的断点。
  • enable [breakpoint number]:启用指定的断点。
  • set var [variable = value]:在运行时修改变量的值。
  • watch [expression]:设置监督点,当表达式的值改变时步调会停下来。
  • quit 或 q:退出GDB。
GDB是一个复杂而强盛的工具,上述下令只是冰山一角。纯熟利用GDB可以大大进步调试步调的服从。


5、Makefile自动化构建

Makefile界说了项目中文件的依靠关系和编译规则,通过make下令可以自动编译整个项目。Makefile的利益在于一旦编写完成,只需一个下令即可完成项目标编译,极大进步了开发服从。
Makefile的根本布局

一个Makefile通常包罗以下部分:


  • 目标(Targets):通常是文件名,体现构建的效果。
  • 依靠(Dependencies):目标文件依靠的源文件或其他目标。
  • 规则(Rules):怎样从依靠天生目标的下令序列。
示例Makefile

假设我们有一个简朴的C步调,包罗两个源文件:main.c 和 utils.c,我们盼望构建一个名为program的可实验文件。
  1. # 定义编译器
  2. CC=gcc
  3. # 定义编译选项
  4. CFLAGS=-g -Wall
  5. # 定义目标文件的前缀
  6. OBJ = main.o utils.o
  7. # 定义最终的可执行文件
  8. TARGET = program
  9. #————————————————————————————————————————————
  10. # 上面的内容了解即可
  11. # 默认目标
  12. all: $(TARGET)
  13. # 规则:如何构建可执行文件
  14. $(TARGET): $(OBJ)
  15.         $(CC) $(CFLAGS) -o $@ $^
  16. # 规则:如何生成目标文件
  17. %.o: %.c
  18.         $(CC) $(CFLAGS) -c $< -o $@
  19. # 伪目标:清理编译生成的文件
  20. .PHONY: clean
  21. clean:
  22.         rm -f $(TARGET) $(OBJ)
复制代码
Makefile的关键概念



  • 自动变量:如$@代表目标文件,$<代表第一个依靠文件,$^代表全部依靠文件。
  • 模式规则:如%.o: %.c是一个模式规则,它匹配全部从.c到.o的转换。
  • 伪目标:如.PHONY: clean界说了一个伪目标,体现make clean下令总是实验,不会查抄是否存在名为clean的文件。
  • 隐含规则:make有一套默认的规则,比方从.c文件编译成.o文件。
自动化构建的上风



  • 淘汰重复工作:开发者只需编写一次构建规则。
  • 进步服从:自动检测文件变革,只重新构建须要更新的部分。
  • 易于维护:会合管理构建过程,易于明白和修改。
Makefile是大型项目中不可或缺的工具,它资助开发者自动化和简化编译构建过程,节流时间并淘汰错误。


6、利用Git举行版本控制

Git是一个分布式版本控制体系,用于跟踪代码的更改。通过git add、git commit和git push三个根本下令,用户可以将当地的代码更改提交到长途堆栈。
[提示]为了制止刚入坑的同砚,着实前期的git只须要三板斧就可以利用,其他下令后期再学习
第一条:添加更改
git add * 利用git add下令将全部更改过的文件添加到暂存区:
第二条:生存更改
git commit -m "Commit message describing the changes" 利用git commit下令将暂存区的文件提交到堆栈
第三条:提交到长途堆栈
git push 利用git push将当地更改推送到长途堆栈

详细下令:
1. 利用刚学的yum安装Git

在大多数Linux发行版中,可以通过包管理器安装Git:
  1. sudo yum install git
复制代码
2. 初始化堆栈

在项目目次中运行以下下令来初始化一个新的Git堆栈:
  1. cd /path/to/your/project
  2. git init
复制代码
3. 添加文件到堆栈

利用git add下令将全部更改过的文件添加到暂存区:
  1. git add *
复制代码
4. 提交更改

利用git commit下令将暂存区的文件提交到堆栈:
  1. git commit -am "Commit message describing the changes"
复制代码
5. 查察状态

利用git status查察堆栈当前的状态:
  1. git status
复制代码
6. 查察提交汗青

利用git log查察提交汗青:
  1. git log
复制代码
7. 创建分支

利用git branch创建新分支:
  1. git branch <branch_name>
复制代码
8. 切换分支

利用git checkout切换到指定分支:
  1. git checkout <branch_name>
复制代码
9. 归并分支

利用git merge将一个分支的更改归并到当前分支:
  1. git merge <branch_name>
复制代码
10. 办理归并辩说

假如归并时出现辩说,Git会制止归并并让你手动办理。办理辩说后,再次提交更改:
  1. git commit
复制代码
11. 推送到长途堆栈

起首,你须要添加一个长途堆栈:
  1. git remote add origin <repository_URL>
复制代码
然后,利用git push将当地更改推送到长途堆栈:
  1. git push -u origin <branch_name>
复制代码
12. 拉取长途更改

利用git pull从长途堆栈拉取最新更改并归并到当前分支:
  1. git pull origin <branch_name>
复制代码
13. 标签管理

利用git tag创建一个新的标签:
  1. git tag <tag_name>
复制代码
推送标签到长途堆栈:
  1. git push origin <tag_name>
复制代码
14. 取消利用



  • 回滚到上一个提交:
  1. git reset --hard HEAD^
复制代码


  • 取消工作目次中的全部更改:
  1. git checkout -- .
复制代码






免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表