GCC是编辑推荐的广泛使用的编译器集合,包括C,C ++,Objective-C,Fortran,ADA和其他语言中的编译器。它最初是由Richard Stallman开发的,是自由软件基金会(FSF)的项目。 GCC具有许多功能,例如优化的代码生成,多种平台支持,多语言支持,自动矢量化和调试支持。它是许多操作系统和软件的标准编译器,包括Linux,Unix,FreeBSD等。使用GCC编译器来生成对象代码,静态链接库和共享对象,还可以执行代码分析和优化。它还提供了许多命令行选项和编译器插件,以满足各种编译要求。 GCC编译器是一种功能强大且广泛使用的编译器,可用于多种语言和平台。
海湾合作委员会包含以下语言的编译器-C:用于编写系统级程序,驱动程序等的编译器。
-C ++ :用于编写面向对象的程序,例如桌面应用程序,游戏等。
- Objective-C:用于在MACOS和iOS中编写应用程序。
- Fortran:用于编写科学计算应用程序。
-ADA:用于编写高可靠性应用程序。
-D:用于编写高性能系统应用程序。
-GO:用于编写并发应用程序。
- OpenMP:用于基于内核的并行编程。
GCC还支持许多不同的目标平台,包括Linux,Windows,Mac OS X,UNIX等。
GCC编译器功能- 字节码:可以将程序编译为字节码并在不同的系统上运行。 - 完整平台:可用于多个系统,包括BlackFin,IBM,SPARC,PowerPC等。-模块化:允许轻松添加新的模块以扩展GCC功能。 - 开源:可以轻松修改和分发。
简而言之,GCC是一种功能强大,可扩展的跨平台编译器,适用于各种编程语言和目标平台。 GCC(GNU编译器收集)是GNU计划的一部分的免费开源编译器收集。它广泛用于在各种平台上的软件开发和编译工作中,包括嵌入式系统,桌面应用程序,服务器应用程序,游戏开发和其他字段。
GCC编译器功能1。免费和开源:GCC是免费的和开源的,任何人都可以免费下载,使用和修改它。这使其在软件开发领域广泛使用。
2。跨平台:GCC可以在各种操作系统和平台上运行,包括Linux,Windows,Mac OS X,BSD,Solaris等。开发人员只需要下载适合其操作系统的版本即可轻松编译该程序。
3。支持多种编程语言:GCC支持多种编程语言,包括C,C ++,Java,Objective-C等。这使开发人员可以使用一组编译器开发各种类型的应用程序。
4。高质量的代码生成:GCC通过使用现代优化算法和优化技术生成高质量的机器代码。这使得编译程序在执行速度和内存使用方面的性能很好。
5。可伸缩性:GCC具有很高的可扩展性,并且可以使用插件和扩展名来实现更多功能。它也可以与其他工具和库(例如GDB,Strace等)集成。
GCC编译器函数1。编译C程序:GCC可以编译C程序并生成可执行文件或库文件。
2。编译C ++程序:GCC可以编译C ++程序并生成可执行文件或库文件。
3。编译Objective-C程序:GCC可以编译Objective-C程序并生成可执行文件或库文件。
4。编译Java程序:GCC可以编译Java程序并生成Java字节码文件。
5。调试程序:GCC集成了GDB调试工具,该工具可以在编译过程中生成调试信息,从而使开发人员更容易调试程序。
6.生成汇编代码:GCC可以生成汇编代码,以促进对代码的内部运行机制和优化的理解。
7.优化程序:GCC可以通过使用优化技术来提高程序的执行效率和优化级别来生成高质量的对象代码。
安装教程1。安装mingw并在其根目录下的bin文件夹中找到其他文件。为了进行测试,在此文件夹中创建了一个新的test.bat文件,并将内容写入:GCC test.cpp
2。在此文件夹中创建一个test.cpp文件,并将其内容设置为:
1。双击test.bat文件,并发现在文件夹中生成了A.EXE文件。执行EXE文件并发现它与预期的汇编效果一致,表明汇编成功。 gcc o name test.cpp
2。可以生成名为name.exe的可执行程序
3。将命令更改为gcc e test.cpp test.txt,错误gcc:无输入文件
4。将参数E更改为大写:GCC E test.cpp test.txt之后解决了问题
用法方法1。海湾合作委员会编译器的常见选项
1。编译选项
海湾合作委员会有100多种汇编选项可用。出于特定目的,您可以使用命令Man GCC查看
2。优化选项
使用GCC编译C/C ++代码时,它将尝试以最少的时间来完成编译,并且易于调试,编译的代码很容易进行调试。易于调试意味着编译的代码具有与源代码相同的执行顺序,并且尚未优化编译的代码。有很多选择可以告诉海湾合作委员会根据更多的汇编时间生产较小,更快的可执行文件,并牺牲了调试的易于措施。这些选项中最典型的是-O和-O2。 -o选项告诉GCC执行源代码的基本优化。 -O2选项告诉GCC生产尽可能快且尽可能快地代码。还有一些非常特殊的选择可以通过Man GCC查看
3。调试和分析选项
海湾合作委员会支持几种调试分析选项。这些选项最常用的是-g和-pg. -g选项告诉GCC生成调试信息,GNU调试者(例如GDB)可以使用这些信息,以便调试用户的程序。 -PG选项告诉GCC向用户程序添加额外的代码。执行时,它会为GPROF生成分析信息,以显示程序的耗时情况。
2。使用GDB方法
1。在命令行中键入GDB,然后按Enter运行GDB。启动GDB后,您可以在命令行上设置很多选项。您还可以在以这种方式运行GDB时运行GDBGDB文件名,您可以直接指定要调试的程序。在命令行上输入GDB -H,以获取有关GDB选项的简单指令列表
2。编译用于调试的代码。为了使GDB工作,该程序必须包括在编译时调试信息。调试信息包括程序中每个变量的类型,可执行文件中的地址映射以及源代码的行号。 GDB使用此信息将源代码与机器代码相关联
3。内容错误搜索
1。运行GDB错误命令并加载错误的可执行文件
2。执行已加载的错误命令
3。使用Where命令查看程序中的错误
4。使用列表命令查看呼叫附近的代码获取功能
5。唯一可能导致get函数错误的因素是变量字符串。使用打印命令查看字符串的值。
6。在GDB中,我们可以直接修改变量的值,只需将法律指针值列入字符串即可。因此,我们将休息时间设置在第11行。
7。该程序重新启动到第11行并停止。目前,我们可以使用SET变量命令来修改字符串的值。
8。然后继续运行,您将看到正确的程序运行结果。
示例1,示例代码
int主(void)
{printf('Hello \ n')
返回0
2。预译过程
1。此过程处理宏定义并包括并执行语法检查
2。您可以看到,在预编译后,代码已从6行扩展到910行。
3。汇编过程
在此阶段,生成装配代码
iv。组装过程
1。在此阶段,生成目标代码
2。此过程以精灵格式生成目标代码
5。链接过程
链接过程。生成可执行代码。有两种类型的链接,一个是静态链接,另一个是动态链接。使用静态链接的优点是,依赖的动态链接库较少,并且对动态链接库的版本不会非常敏感,并且具有良好的兼容性。缺点是生成的程序相对较大。使用动态链接的优点是生成的程序较小,并且占用更少的内存
6。运行程序
7。以Hello.c为例,在这四个步骤中,您可以将选项设置为生成Hello.i,Hello.s,Hello.o和Final Hello File:
Hello.c:初始源代码文件
Hello.i:编译的预处理源代码
Hello.S:组装处理后的装配代码
Hello.o:编译的对象文件包含最终编译的机器代码,但是
尚未定义该功能在面部引用的其他文件中的内存位置
您好/a.out:最终可执行文件
用文件类型的文件作为后缀,C语言源代码文件
带有后缀的文件是由目标文件组成的存档文件
.c,cc或.cxx的后缀为C ++源代码文件,必须进行预处理
带有.h的文件是程序中包含的标头文件
具有.i作为后缀的文件是C源代码文件,不应预处理。
具有.ii作为后缀的文件是C ++源代码文件,不应预处理。
带有.m的文件作为后缀是一个Objective-C源代码文件
带有.mm的文件作为后缀是一个Objective-C ++源代码文件
带有.o作为后缀的文件是编译的目标文件
带有后缀的文件是汇编语言源代码文件
带有.s的文件作为后缀是预编译的汇编语言源代码文件
执行程序1。预处理预处理
gcc -e hello.c -o hello.i //完成标头文件和宏定义的扩展,并生成hello.i预处理文件
2。编译
gcc -s hello.i //生成汇编代码并生成hello.s的汇编文件
3。集会
gcc -c hello.s //生成二进制对象文件并生成hello.o文件
4。链接链接
gcc hello.o -o hello //链接相关库,生成可执行文件,没有后缀
PS:通常会生成可执行程序,该程序可以直接:GCC Hello.c -o Hello
GDB提示符处的命令类型帮助将列出命令分类,主要类别为:
别名:命令别名
断点:断点定义
数据:数据查看
文件:指定并查看文件
内部:维护命令
运行:程序执行
堆栈:呼叫堆栈视图
状态:状态视图
跟踪点:跟踪程序执行
键入命令的类别名称,然后命令获取此类命令:的详细列表
断开指定行上的NUM设置断点
BT显示所有调用堆栈帧。此命令可用于显示函数的呼叫顺序
在特定源文件或特定行上设置的清除删除断点。它的用法是:clear filename:num
继续执行要调试的程序。当程序由于处理信号或断点而停止运行时,使用此命令
每次程序停止时,Display Expr显示表达式的值。表达式由程序定义的变量组成
文件文件加载指定的可执行文件进行调试
帮助名称显示指定命令的帮助信息
信息断路显示当前断点列表,包括它到达断点的次数,等等。
信息文件显示调试文件的详细信息
信息func显示所有功能名称
信息本地显示函数时的本地变量信息
信息prog显示调试程序的执行状态
信息var显示所有全局和静态变量名称
杀死终止了调试程序
列表显示源代码段
在不退出GDB的情况下进行运行的工具
接下来执行源代码线向前执行,而无需踏入其他功能
打印expr显示表达式expr的值
处理器体系结构alpha
手臂
ATMEL AVR
黑鳍
H8/300
IA-32
IA-64示例:iTanium
Morphosys家族
摩托罗拉68000
摩托罗拉88000
mips
PA-RISC
PDP-11
PowerPC
系统/370,系统/390
超级
HC12
Sparc
vax
Renesas R8C/M16C/M32C系列
A29K
弧
C4X
克里斯
D30V
DSP16XX
FR-30
fr-v
英特尔I960
IP2000
M32R
68HC11
麦克
mmix
MN10200
MN10300
NS32K
欢蹦乱跳
Stormy16
V850
Xtensa
D10V
微型闪电
PDP-10
MSP430
Z8000
GCC编译器突出显示1。灵活的交叉补偿:GCC可以执行交叉兼容,从一个平台到不同平台生成可执行文件或库文件,具有较高的灵活性。
2.生成优化代码:GCC支持许多优化选项,这些选项可以生成更有效的对象代码并改善程序的性能。
3。开源,免费和适用:GCC是一种免费的开源软件,适用于各种操作系统和编程语言,并且被广泛认可和使用。
4.支持搬迁:GCC可以支持可执行文件或库文件中的符号搬迁,从而使其在软件的开发和维护方面更加灵活。
5。出色的兼容性:GCC支持标准C和C ++语法,支持大多数平台和操作系统,并且可以使用Libtool,AutoConf和Automake工具轻松编译和构建您自己的代码。
6。高质量的生成代码:GCC可以基于硬件体系结构和指令集生成高质量的对象代码,以确保有效的编程。
更新日志GCC编译器V10.0更新内容
1。带来一组链接时间优化(LTO)框架,以提高可伸缩性并减少内存使用
在64位系统上需要2。8G内存来优化Firefox,但使用LTO后仅需要3G。
3。支持更多C ++ 11标准,包括原子能,C ++ 11内存模型,用户定义的文本,别名声明,构造函数委托和可扩展语法。
4。提高对福特兰的支持
5。支持Google GO 1和其他改进
6。进一步加强对C ++ 11的支持
121.36MB
1117.83MB
2282.95MB
31.68GB
4353.11 MB
588.6M
6538.62MB
7102MB
8