欧阳坚主讲:嵌入式Linux GCC强化训练概览与编译选项详解

需积分: 8 2 下载量 61 浏览量 更新于2024-07-29 收藏 1.02MB PPT 举报
本资源是一份关于嵌入式Linux环境下GCC强化训练的PPT,由主讲老师欧阳坚讲解。GCC,全称为GNU Compiler Collection,是一个广泛使用的开源编译器套件,支持多种硬件平台和操作系统,包括Linux。它能够编译多种编程语言,如C、C++、Java、Ada95、Objective-C等,体现了其强大的兼容性和灵活性。 在讲解中,重点介绍了GCC与G++的关系。GCC主要用于编译C语言程序,而G++是GCC的一个增强版本,专为C++设计,它在GCC的基础上增加了对C++语言特性的支持,如类和对象等。尽管可以使用GCC来编译C++程序,但为了利用C++库(如libstdc++),通常需要在命令行中添加额外参数,如`gcc -o output main.cc -lstdc++`。 可执行程序的生成过程被分为四个步骤:预处理、编译、汇编和链接。预处理器处理预处理指令,如宏定义和包含文件;编译阶段将源代码转换为汇编代码;汇编则将汇编语言转换为机器特定的代码;最后,链接器将目标文件和库文件结合成可执行文件。 源程序文件包括C和C++源代码文件(.c, .cc, .cpp)以及相应的头文件(.h, .hh)。经过预处理后,会产生预处理后的文件(.i, .ii)。编译后会生成目标文件(.o),而汇编代码文件为.s。此外,还介绍了GCC支持的文件类型,包括不同类型的源文件和预处理后的文件。 在编译选项方面,这份教程列举了一些常用的选项: - `-E`:只进行预处理,输出到终端。 - `-S`:预处理和编译,生成汇编代码文件。 - `-c`:预处理、编译和汇编,生成目标文件。 - `-o`:指定输出的可执行文件名。 - `-O`或`-O2`:优化编译级别,提高运行效率。 - `-g`:添加调试信息,便于调试。 - `-Wall`:显示所有可能的警告信息,有助于发现潜在问题。 - `-Wstrict-prototypes`:对于函数声明和定义中的类型信息缺失,给出警告。 这份PPT深入浅出地解释了GCC在嵌入式Linux环境中的应用,从基础概念到实际操作,涵盖了从源代码到可执行程序生成的全过程,以及如何有效地利用GCC的各种编译选项。这对于想要学习和掌握嵌入式系统开发的工程师来说,是一份非常实用的参考资料。