Linux C程序设计:编辑、编译与运行解析
需积分: 20 129 浏览量
更新于2024-08-16
收藏 3.42MB PPT 举报
本文主要介绍了Linux Shell程序设计中关于可执行程序段的分配原则,以及C程序的基础知识,包括编辑、编译、运行过程和文本编辑器vi的使用。
在Linux系统中,可执行程序由多个段组成,这些段各自承担不同的功能:
1. **代码段(text segment)**:存放程序的机器指令,即编译后的二进制代码。这个段是只读的,确保代码不会在执行过程中被意外修改。所有的函数和C语言的语句都会被编译并存储在这里。
2. **初始化数据段(initialized data segment)/数据段(data segment)**:包含已经初始化的全局变量和静态变量。这些变量在程序加载时就有确定的初始值。
3. **未初始化数据段(uninitialized data segment)/BSS段**:用于存放未初始化的全局变量和静态变量。在程序开始执行时,内核会自动将BSS段中的所有内存清零。这样可以节省可执行文件的空间,因为无需存储默认值。
4. **堆(heap)**:虽然没有在描述中提及,但也是程序运行的重要部分。堆是动态分配内存的区域,程序员可以通过malloc等函数在运行时请求内存。
5. **栈(stack)**:栈主要用于存储函数调用时的局部变量和函数调用的上下文信息。当函数调用结束,栈上的空间会被自动释放。
在C程序的开发流程中,通常涉及以下几个步骤:
1. **编辑**:使用文本编辑器,如vim,编写源代码(例如`1-1.c`)。
2. **编译**:使用gcc编译器将源代码编译成目标代码,如`gcc 1-1.c -o 1-1`,这会产生一个可执行文件`1-1`。
3. **运行**:通过执行`./1-1`来运行编译后的程序,显示预期的输出。
文本编辑器vi是一个重要的工具,它有三种工作模式:
- **命令模式**:默认模式,用户在此模式下输入的字符被视为vi的命令。
- **输入模式**:通过特定命令(如`i`)进入,可以在此模式下输入文本。
- **末行模式**:用于执行更高级的操作,如保存文件(`:w`)或退出vi(`:q`,`:q!`,`:wq`等)。
了解这些基本概念对于理解和编写Linux下的Shell脚本和C程序至关重要。掌握好这些知识,能帮助开发者更好地组织和管理程序的内存,以及有效地进行程序开发和调试。
2012-06-07 上传
2020-10-08 上传
2017-02-24 上传
2021-08-12 上传
2013-03-14 上传
2019-08-16 上传
2022-09-23 上传
2022-08-04 上传
2021-04-12 上传