Linux编程环境 川大软件学院教学课件

### Linux编程环境——川大软件学院教学课件
#### 编辑器——VI
**VI简介**
VI(Visual Interface)是一种广泛应用于Unix和Linux系统的文本编辑器,它以其高效性和灵活性著称。VI并不具备现代编辑器所拥有的图形界面和高级特性,但它能够快速完成基本的文本编辑任务。
**工作模式**
VI主要有三种工作模式:
1. **命令模式**:这是启动VI后的默认模式。在此模式下,可以进行各种编辑操作,但不能输入文本。
- **移动光标**:通过键入`h`、`j`、`k`、`l`来分别控制光标向左、向下、向上、向右移动。
- **行首与行尾**:`^`键将光标移动到行首,`$`键将光标移动到行尾。
- **滚动屏幕**:`Ctrl+b`向上滚动一屏,`Ctrl+f`向下滚动一屏,`Ctrl+d`向下滚动半屏,`Ctrl+u`向上滚动半屏。
- **移动到文档位置**:`G`键移动到文档的结尾,`nG`移动到第n行。
- **单词移动**:`w`移动到下一个单词的开头,`b`移动到上一个单词的开头。
- **删除**:`x`删除光标右侧的一个字符,`nx`删除光标右侧的n个字符,`dd`删除光标所在行,`ndd`删除当前行及之后的n行。
- **复制与粘贴**:`yw`将光标处的字复制到缓冲区,`yy`复制光标所在行,`nyy`复制光标所在行及其下方的n行,`p`将缓冲区内容粘贴到当前位置。
- **撤销与恢复**:`u`撤销上一步操作。
- **查找**:`/word`从当前光标位置开始向前搜索word,`?word`从当前位置开始向后搜索word。
- **重复操作**:`.`重复上一个操作。
- **退出**:`ZZ`保存并退出。
2. **输入模式**:在此模式下,可以直接输入文本。可以通过以下几种方式进入输入模式:
- `i`在当前光标位置前插入文本。
- `I`在当前行的开头插入文本。
- `a`在当前光标位置后添加文本。
- `A`在当前行的末尾添加文本。
- `o`在当前行的下面创建一行并进入插入模式。
- `O`在当前行的上面创建一行并进入插入模式。
- 通过按`ESC`键回到命令模式。
3. **末行模式**:通过输入冒号(`:`)进入末行模式,可以执行更复杂的命令:
- `:w`保存文件。
- `:q`退出VI(如果文件未修改)。
- `:wq`保存并退出。
- `:q!`放弃修改并退出。
- `:wq!`强制保存并退出。
- `:w file`将编辑的内容另存为`file`。
- `:set nu`显示行号。
- `:n,m/old/new/g`在第n行到第m行之间替换所有出现的`old`为`new`。
#### 编译工具——GCC
**GCC简介**
GCC(GNU Compiler Collection)是一套由自由软件基金会发布的编译器集合,它支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada、Go和Java等。GCC不仅是一个编译器,还包括了预处理器、编译器、汇编器和链接器等多个组件。
**GCC编译流程**
GCC的编译过程可以分为四个主要步骤:
1. **预处理**(Pre-Processing):处理源代码文件中的宏指令,例如`#include`、`#if`等。
2. **编译**(Compiling):检查代码的语法正确性并将源代码转换为汇编语言。
3. **汇编**(Assembling):将汇编语言转换成机器语言的目标代码。
4. **链接**(Linking):将目标代码与库文件链接生成最终的可执行文件。
**函数库**
GCC支持两种类型的库文件:静态库和动态库。
- **静态库**:在链接过程中,静态库的代码会被直接嵌入到可执行文件中。
- **动态库**:在链接过程中,动态库的代码不会直接嵌入到可执行文件中,而是在程序运行时动态加载。
**GCC的常用选项**
GCC提供了丰富的命令行选项,允许用户控制编译过程的各个方面。
- `-c`:只编译为目标文件,不进行链接。
- `-S`:编译为汇编代码。
- `-E`:仅进行预处理。
- `-Wwarn`:设置警告,可以使用`-Wall`来开启所有警告。
- `-Olevel`:设置优化级别,默认为`-O0`(不优化),可选值为0、1、2、3或`s`。
- `-Dname=definition`:在命令行上定义宏,用于调试时开启或关闭某些功能。
GCC的强大之处在于其灵活性和扩展性,通过不同的选项组合,可以满足不同场景下的需求。无论是简单的代码编译还是复杂的项目构建,GCC都能够提供相应的解决方案。

DarkMagician_Potter
- 粉丝: 11
最新资源
- 分布式数据管理服务框架_跨设备数据库同步与存储系统_提供基于账户应用数据库三元组隔离的分布式数据存储能力_支持多用户权限管理数据备份恢复与在线设备间实时数据同步_通过KV数据模型和.zip
- 分布式新能源储能配置优化研究项目_储能系统容量规划_分布式能源消纳_风光互补发电_削峰填谷_电网调频_用户侧储能_微电网应用_全生命周期成本分析_多目标优化算法_混合整数线性规划_.zip
- 基于Vue3和Vite构建的现代化智能图片仓库前端管理系统_支持图片上传存储分类标签搜索预览编辑批量操作权限控制响应式设计_为设计师摄影师和内容创作者提供高效的视觉素材管理解决方案.zip
- ESP32微控制器项目源码集合_包含OLED显示屏驱动LCD显示屏驱动字模文件处理MicroPython编程实现硬件接口控制嵌入式系统开发物联网设备应用电子爱好者学习.zip
- 智能机器人代码存储仓库_机械臂控制算法_嵌入式系统开发_ROS框架集成_运动规划模块_视觉识别处理_传感器数据融合_实时轨迹优化_多轴联动控制_工业自动化应用_开源硬件适配_Pyt.zip
- OpenWebUI智能上下文管理插件_递归摘要技术避免截断丢失信息_长对话智能处理与内容保留优化_大消息分割与并发摘要处理_精确Token计算与多层递归策略_自定义保留比例与实时进.zip
- IT知识储备库项目_编程语言篇JavaPython操作系统篇开发篇游戏扩展篇数据库篇算法篇网络篇网页开发篇_为IT学习者提供全面系统的知识体系与实战资源_JavaPython操作系.zip
- Rust语言高效栈上小向量优化库_栈上存储堆上扩展自动内存管理零成本抽象性能优化_用于在Rust中实现小型集合的高效内存分配减少堆内存分配开销提升程序性能_基于Rust语言特性实现.zip
- 前端技术预研与储备知识学习项目_前端开发JavaScript框架响应式设计性能优化Web标准浏览器兼容性CSS预处理器构建工具模块化开发TypeScriptPW.zip
- Rust_SmallVec_栈上小向量优化库_用于高效存储少量数据项的智能容器_支持自动堆栈切换与动态内存管理_提供类似标准向量的API接口但具有更高性能_适用于嵌入式系统和性能敏.zip
- libBmsso测试程序_动态链接库功能验证与性能评估工具_用于电池管理系统核心模块的单元测试集成测试压力测试及异常场景模拟_包含CAN通信数据解析充放电逻辑校验故障诊断算法验证.zip
- 基于MinIO的高性能分布式对象存储服务系统_支持S3兼容接口与多节点集群部署_提供企业级数据存储解决方案_集成纠删码数据保护与位衰减防护机制_适用于Kubernetes容器化环境.zip
- 基于QT框架开发的温湿度监测系统_实时数据显示与动态曲线绘制_历史数据记录与数据库查询_Modbus协议通信与MySQL数据存储_用于工业环境或实验室的温湿度远程监控与数据分析_Q.zip
- 广东第二师范学院校园助手安卓原生客户端应用_成绩查询课表查询四六级查询教学评价消费查询校园卡充值图书借阅查询_为在校师生提供便捷的校园生活服务和教学管理功能_兼容Android9.zip
- H5容器Web端管理系统_离线包上传存储CDN资源推送与信息查询接口_提供完整的H5容器离线资源管理解决方案支持多环境部署与版本控制_前端工程化NodejsExpressMongo.zip
- 微机原理实验代码存储库_汇编语言源代码与实验文档_用于保存和管理微机原理课程中的实验代码及参考材料_包含ASM文件和DOXC文件_使用VSC编辑器编写_实际功能与参考代码存在差异_.zip