目录

Linux学习之旅基础开发工具重点知识整理

Linux学习之旅:基础开发工具重点知识整理

在Linux下,软件包是将预先编译好的软件进行封装形成的文件,类似于Windows上的安装程序。通过包管理器,用户可以方便地获取并安装这些软件包。

Linux软件生态的丰富性是衡量系统好坏的重要标准之一。许多社区和个人会免费提供软件,并建立云服务器供用户下载,这极大地丰富了Linux的软件资源。

国内镜像源如阿里云、清华大学开源软件镜像站等,为用户提供丰富的Linux发行版镜像和软件包,方便用户快速下载和更新软件。

  • 查看软件包 :使用 yum list | grep [软件名] (Centos)或 apt search [软件名] (Ubuntu)筛选出关注的软件包。
  • 安装软件 :通过 sudo yum install -y [软件名] (Centos)或 sudo apt install -y [软件名] (Ubuntu)简单命令完成安装。
  • 卸载软件 :使用 sudo yum remove [-y] [软件名] (Centos)或 sudo apt remove [-y] [软件名] (Ubuntu)卸载软件。
  • 注意事项 :操作必须保证主机网络畅通,安装和卸载过程中避免重复操作,如有报错可自行搜索解决。

Vim是一种多模式编辑器,主要有三种模式:命令模式(Normal mode)、插入模式(Insert mode)和底行模式(Last line mode),各模式功能区分明确。

  • 进入Vim :在系统提示符输入 vim [文件名] 进入Vim全屏幕编辑画面,初始处于命令模式。

  • 模式切换

    • 命令模式到插入模式 :按 iao 键。
    • 插入模式到命令模式 :按 ESC 键。
    • 命令模式到末行模式 :按 shift + : 键。
  • 插入模式 :按 iao 键进入插入模式,进行文字输入。
  • 移动光标 :可使用键盘上的光标键或 hjkl 键控制光标移动, G$^ 等键可快速移动到文件特定位置。
  • 删除文字x 键删除光标所在位置的字符, dd 键删除光标所在行。
  • 复制yw 复制光标所在处到字尾的字符, yy 复制光标所在行。
  • 替换r 键替换光标所在处的字符, R 键持续替换字符直到按下 ESC 键。
  • 撤销上一次操作u 键撤销操作, ctrl + r 恢复撤销。
  • 更改cw 更改光标所在处的字到字尾处。
  • 跳至指定的行ctrl + g 列出光标所在行的行号, #G 跳到指定行。
  • 列出行号 :输入 set nu 列出文件中每行的行号。
  • 跳到文件中的某一行 :输入行号即可跳转到指定行。
  • 查找字符/关键字 向后查找, ?关键字 向前查找。
  • 保存文件 :输入 w 保存文件。
  • 离开Vim :输入 q 退出, wq 保存并退出, q! 强制退出不保存。
  • 配置文件位置 :系统公共配置文件在 /etc/vimrc ,用户私有配置文件在用户主目录下的 .vimrc
  • 常用配置选项 :如设置语法高亮( syntax on )、显示行号( set nu )、设置缩进空格数( set shiftwidth=4 )等。
  • 使用插件 :可安装TagList、WinManager等插件完善Vim配置,提升使用体验。

gcc/g++编译器的使用涉及预处理、编译、汇编和连接四个阶段,将源代码转换为可执行文件。

  • 预处理-E 选项进行宏替换等预处理操作,生成 .i 文件。
  • 编译-S 选项生成汇编代码,不进行汇编和链接。
  • 汇编-c 选项将汇编代码转化为目标代码,生成 .o 文件。
  • 连接 :将目标文件链接生成可执行文件。
  • 静态库 :编译链接时将库文件代码加入可执行文件,生成的文件较大,但运行速度快,且不依赖外部库文件,后缀名一般为 .a
  • 动态库 :编译链接时不加入库文件代码,程序运行时由运行时链接文件加载库,节省系统开销,后缀名一般为 .so 。gcc在编译时默认使用动态库。
  • -g :生成调试信息,供GNU调试器使用。
  • -O0-O1-O2-O3 :编译器的优化选项,级别依次升高。
  • -w :不生成任何警告信息。
  • -Wall :生成所有警告信息。

Makefile定义了一系列规则,指定文件的编译顺序和依赖关系,实现自动化编译,提高软件开发效率。

Makefile通过定义目标文件、依赖文件和命令规则,控制文件的编译和链接过程。目标文件的依赖关系决定了编译的顺序。

  • 简单实例 :通过定义目标文件、依赖文件和编译命令,实现简单程序的自动化编译。
  • 依赖关系 :目标文件依赖于源文件,源文件变化时,Makefile会自动重新编译相关的目标文件。
  • 项目清理 :使用 clean 目标删除生成的中间文件和可执行文件,方便重新编译。

通过定义变量、使用函数等,简化Makefile的编写,提高其可读性和可维护性。

行缓冲区的存在可能导致程序输出行为的差异,理解行缓冲区有助于控制程序的输出时机。

通过编写倒计时程序,掌握行缓冲区的使用和控制,以及如何实现简单的文本输出控制。

进度条的实现展示了如何通过字符操作和行缓冲区控制,实现动态的进度显示,提升用户交互体验。

版本控制器记录文件的历史和开发过程,方便管理不同版本的文件和协同作业,Git是最主流的版本控制器。

Git诞生于2005年,因Linux内核开发需求而创建,具有速度快、支持非线性开发、完全分布式等特点。

通过 yum install git 命令安装Git,为后续的版本控制操作做好准备。

注册Github账号,创建项目并获取项目链接,为代码的上传和管理做准备。

  • git add :将代码添加到Git管理中。
  • git commit :提交改动到本地仓库,需附上提交日志。
  • git push :将本地仓库的改动同步到远程服务器,如Github。
  • git log/status/pull :查看提交历史、当前状态和从远程拉取更新。
  • .ignore :配置忽略文件,避免不必要的文件被纳入版本控制。

通过简单的C语言代码示例,展示如何使用gdb进行调试。

在编译源代码时添加 -g 选项,生成包含调试信息的可执行文件,为调试做好准备。

  • 开始调试 :使用 gdb binFile 命令启动gdb调试器。
  • 退出调试 :按 ctrl + d 或输入 quit 命令退出调试器。
  • 常用调试命令 :如 list 查看源代码, run 开始执行程序, next 单步执行不进入函数内部, step 单步执行进入函数内部, break 设置断点, info break 查看断点信息等。
  • 安装cgdb :提升调试体验,实现在终端中查看代码的调试。
  • watch :监视变量值的变化,定位问题。
  • set var :修改变量的值,测试程序的行为。
  • 条件断点 :设置条件断点,仅在满足条件时暂停程序执行,精准定位问题。

以上内容涵盖了Linux基础开发工具的重点知识,包括软件包管理器、Vim编辑器、gcc/g++编译器、Makefile自动化构建、进度条程序开发、Git版本控制以及gdb调试器的使用。希望这些整理能帮助你快速掌握Linux开发工具的使用,为后续的深入学习和项目开发打下坚实的基础。