【北京迅为】i.MX6ULL终结者gcc编译器

1. gcc命令分析

在上节我们已经使用gcc编译了Linux下的第一个C程序,gcc命令的格式如下:
gcc [参数] [文件名]
主要参数说明如下:
-c 编译、汇编到目标代码(.o),不链接成可执行文件
-g 生成调试信息
-o 编译完成后生成的文件名,如果不使用该选项,默认生成a.out文件
-O 对程序进行优化编译,产生的可执行文件执行效率高
-w 不生成任何警告
-S 仅编译到汇编语言,不进行汇编和链接

2. 编译警告错误处理

我们是Windows下使用Keil或者其他开发工具,在编译的时候,如果程序有错误,开发工具会提示出具体的错误信息,可以很方便的定位到问题点,快速的修改出现的问题,gcc同样也有类似的功能,下面我们来看下gcc的错误提示功能,首先我们在work目录下建立文件夹“test2”,然后使用vim在test2文件夹创建main.c文件夹,在main.c文件输入如下代码:

#include <stdio.h>

int main(int argc, char *argv[])
{
	int a;

	a = 1

	printf("a=\n", a);

	return 0;
}

上面代码有两处错误:
第7行 最后缺少“;”
第9行 printf语法不对,应该为:printf(“a =%d\n”, a);
我们使用gcc编译main.c,可以看到gcc会提示错误信息,如图 2.1所示:

在这里插入图片描述

图 2.1

从上图中可以看到在mian.c文件的第9行printf前面缺少“;”我们在第7行“a = 1”后面加上“;”,然后继续编译,如图 2.2所示:

在这里插入图片描述

图 2.2

从上图可以看出编译提示语法格式不对,我们把第9行修改成“printf(“a=%d\n”, a);”,然后在继续编译,如图 2.3所示:在这里插入图片描述

图 2.3

我们可以看到这次gcc编译通过,最终生成了文件main。我们在终端执行main,运行结果如图 2.4所示:在这里插入图片描述

图 2.4

从上图可以看到运行的结果和我们涉及到的结果一致,通过本例程可以看到gcc编译器不仅可以检测出程序的错误,而且还会标记处错误在哪个文件的哪一行,很方便的帮助我们去修改问题。

3. gcc编译流程

gcc的编译流程可以分成四个步骤:
1.预处理,生成预编译文件(.文件)
2.编译,生成汇编代码(.S文件)
3.汇编,生成目标文件(.o文件)
4.链接,生成可执行文件

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BeiJingXunWei/article/details/108200426