多写多练,继续加油
一、Linux GCC常用命令
1.1 简介
GCC 的意思也只是GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持C语言;它现在还支持Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言等,以及支持函数式编程和逻辑编程Mercury 语言,等等。而GCC 也不再单只是GNU C 语言编译器的意思了,而是变成了GNU Compiler Collection 也即是GNU 编译器家族的意思了。另一方面,说到GCC 对于操作系统平台及硬件平台支持,概括起来就是一句话:无所不在。
1.2 C 运行库
C 语言标准主要由两部分组成: 一部分描述C 的语法, 另一部分描述C 标准库。C 标准库定义了一组标准头文件,每个头文件中包含一些相关的函数、变量、类型声明和宏定义, 譬如常见的printf 函数便是一个C 标准库函数, 其原型定义在stdio 头文件中。C 语言标准仅仅定义了C 标准库函数原型, 并没有提供实现。因此, C 语言编译器通常需要一个C 运行时库( C Run Time Libray, CRT) 的支持。C 运行时库又常简称为C 运行库。与C 语言类似, C++也定义了自己的标准, 同时提供相关支持库, 称为C++运行时库。
二、简单编译学习
2.1 准备工作
在Linux系统中新建一个文件夹,用C语言写一个简单的Hello-GCC-World的程序,以便后续编译使用
#include <stdio.h>
int main()
{
printf("Hello GCC world!!!\n");
return 0;
}
2.2 一步到位
执行命令gcc main.c -o main
,一步到位编译成功,直接执行即可。实质上,上述编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。
2.3 编译过程
01 预处理
执行命令gcc -E main.c -o main.i
,生成文件main.i
可以输出main.i
文件中存放着main.c
经预处理之后的代码。打开main.i
文件,看一看,就明白了。gcc 的-E 选项,可以让编译器在预处理后停止,并输出预处理结果。在本例中,预处理结果就是将stdio.h 文件中的内容插入到main.c
中了。
$ gcc -E main.c -o main.i
$ ls
main.c main.i
$