GCC是一种广泛使用的编译器集合,其中包括C,C ++,Objective-C,Fortran,Ada和其他语言的编译器。它最初由理查德·斯托曼(Richard Stallman)开发,是自由软件基金会(FSF)的一个项目。GCC具有许多功能,例如优化代码生成,多个平台支持,多语言支持,自动向量化和调试支持。它是许多操作系统和软件的标准编译器,包括Linux,Unix,FreeBSD等。使用GCC编译器可以生成目标代码,静态链接库和共享对象,还可以执行代码分析和优化。它还提供了许多命令行选项和编译器插件来满足多样化的编译要求。GCC编译器是一种功能强大且广泛使用的编译器,可用于多种语言和平台。
- C++: 用于编写面向对象的程序,如桌面应用程序,游戏等。
- Objective-C: 用于编写 MacOS 和 iOS 中的应用程序。
- Fortran: 用于编写科学计算应用程序。
- Ada: 用于编写高可靠性的应用程序。
- D: 用于编写高性能的系统应用程序。
- Go: 用于编写并发应用程序。
- OpenMP: 用于基于内核的并行编程。
GCC 还支持许多不同的目标平台,包括 Linux、Windows、Mac OS X、Unix 等。
总之,GCC 是一种功能强大,可扩展,跨平台的编译器,适用于多种编程语言和目标平台。 GCC(GNU Compiler Collection)是一款免费开源的编译器集合,是GNU计划的一部分。它被广泛应用于各种平台上的软件开发和编译工作中,包括嵌入式系统,桌面应用程序,服务器应用程序,游戏开发等领域。
2.跨平台:GCC可以在多种操作系统和平台上运行,包括Linux、Windows、Mac OS X、BSD、Solaris等。开发人员只需要下载适合自己操作系统的版本即可轻松编译程序。
3.支持多种编程语言:GCC支持多种编程语言,包括C、C++、Java、Objective-C等。这使得开发人员可以使用一款编译器集合,开发各种类型的应用程序。
4.高质量代码生成:GCC通过使用现代优化算法和优化技术,生成高质量的机器代码。这使得编译出的程序在执行速度和占用内存等方面都有很好的表现。
5.可扩展性:GCC具有很高的可扩展性,使用插件和扩展可以实现更多的功能。它还可以与其他工具和库集成,如gdb、strace等。
2.编译C++程序:GCC可以编译C++程序,生成可执行文件或库文件。
3.编译Objective-C程序:GCC可以编译Objective-C程序,生成可执行文件或库文件。
4.编译Java程序:GCC可以编译Java程序,生成Java字节码文件。
5.调试程序:GCC集成了gdb调试工具,可以在编译期间生成调试信息,方便开发人员进行程序调试。
6.生成汇编代码:GCC可以生成汇编代码,方便了解代码内部运行机制和优化情况。
7.优化程序:GCC通过使用优化技术可以生成高质量的目标代码,提高程序的执行效率和优化程度。
二、在该文件夹中创建test.cpp文件并将其内容设置为:
1.双击test.bat文件,发现该文件夹中产生了一个a.exe文件,执行该exe文件,发现其与预期编译效果一致,说明编译成功。gcc –o name test.cpp
2.可以生成名为name.exe的可执行程序
3.把指令改为gcc –e test.cpp >test.txt 后,提示错误gcc: no input files
4.而把参数E改为大写之后问题即解决:gcc –E test.cpp > test.txt
1.编译选项
gcc有超过100个的编译选项可用。具体的可以使用命令man gcc察看
2.优化选项
用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。有很多的选项可以告诉GCC在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。这些选项中最典型的就是-O和-O2。-O选项告诉gcc对源代码进行基本优化。-O2选项告诉GCC产生尽可能小的和尽可能快的代码。还有一些很特殊的选项可以通过man gcc察看
3.调试和剖析选项
GCC支持数种调试剖析选项。在这些选项中最常用的是-g和-pg.-g选项告诉gcc产生能被GNU调试器(如gdb)使用的调试信息,以便调试用户的程序。-pg选项告诉gcc在用户的程序中加入额外的代码,执行时,产生gprof用的剖析信息以显示程序的耗时情况
二、使用GDB方法
1.在命令行中键入gdb并按回车就可以运行gdb了,启动gdb后,能在命令行上制定很多的选项,也可以下面的方式来运行gdb: gdb filename 用这种方式运行gdb时,能直接指定想要调试的程序。在命令行上健入gdb -h得到一个有关gdb的选项的说明简单列表
2.编译代码以供调试,为了使gdb工作,必须使程序在编译时包含调试信息,调试信息包含程序里的每个变量的类型,在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联
三、内容错误查找
1.运行 gdb bugging 命令,装入 bugging 可执行文件
2.执行装入的 bugging 命令
3.使用 where 命令查看程序出错的地方
4.利用 list 命令查看调用 gets 函数附近的代码
5.唯一能够导致 gets 函数出错的因素就是变量string,用print命令查看string的值
6.在 gdb 中,我们可以直接修改变量的值,只要将 string 取一个合法的指针值就可以了,为此,我们在第11行处设置断
7.程序重新运行到第11行处停止,这时,我们可以用 set variable 命令修改 string 的取值
8.然后继续运行,将看到正确的程序运行结果
int main(void)
{printf("hello\n")
return 0
二、预编译过程
1.这个过程处理宏定义和include,并做语法检查
2.可以看到预编译后,代码从6行扩展到了910行
三、编译过程
这个阶段,生成汇编代码
四、汇编过程
1.这个阶段,生成目标代码
2.此过程生成ELF格式的目标代码
五、链接过程
链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存
六、程序运行
七、以hello.c为例子,在这四个步骤中可以设置选项分别生成hello.i, hello.s, hello.o以及最终的hello文件:
hello.c: 最初的源代码文件
hello.i: 经过编译预处理的源代码
hello.s: 汇编处理后的汇编代码
hello.o: 编译后的目标文件,即含有最终编译出的机器码,但它里
面所引用的其他文件中函数的内存位置尚未定义
hello / a.out: 最终的可执行文件
.a为后缀的文件,是由目标文件构成的档案库文件
.C,.cc或.cxx 为后缀的文件,是C++源代码文件且必须要经过预处理
.h为后缀的文件,是程序所包含的头文件
.i 为后缀的文件,是C源代码文件且不应该对其执行预处理
.ii为后缀的文件,是C++源代码文件且不应该对其执行预处理
.m为后缀的文件,是Objective-C源代码文件
.mm为后缀的文件,是Objective-C++源代码文件
.o为后缀的文件,是编译后的目标文件
.s为后缀的文件,是汇编语言源代码文件
.S为后缀的文件,是经过预编译的汇编语言源代码文件
gcc -E hello.c -o hello.i //完成头文件和宏定义的展开,生成hello.i预处理文件
2、Compiling编译
gcc -S hello.i //生成汇编代码,生成hello.s的汇编文件
3、Assembling 汇编
gcc -c hello.s //生成二进制目标文件,生成hello.o文件
4、Linking 链接
gcc hello.o -o hello //链接相关库,生成可执行文件hello,没有后缀
PS:一般生成可执行程序,可以直接:gcc hello.c -o hello
aliases:命令别名
breakpoints:断点定义
data:数据查看
files:指定并查看文件
internals:维护命令
running:程序执行
stack:调用栈查看
statu:状态查看
tracepoints:跟踪程序执行
键入help后跟命令的分类名,可获得该类命令的详细清单:
break NUM 在指定的行上设置断点
bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序
clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM
continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时
display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成
file FILE 装载指定的可执行文件进行调试
help NAME 显示指定命令的帮助信息
info break 显示当前断点清单,包括到达断点处的次数等
info files 显示被调试文件的详细信息
info func 显示所有的函数名称
info local 显示当函数中的局部变量信息
info prog 显示被调试程序的执行状态
info var 显示所有的全局和静态变量名称
kill 终止正被调试的程序
list 显示源代码段
make 在不退出 gdb 的情况下运行 make 工具
next 在不单步执行进入其他函数的情况下,向前执行一行源代码
print EXPR 显示表达式 EXPR 的值
ARM
Atmel AVR
Blackfin
H8/300
IA-32〈x86〉 与x86-64
IA-64例如:Itanium
MorphoSys 家族
Motorola 68000
Motorola 88000
MIPS
PA-RISC
PDP-11
PowerPC
System/370,System/390
SuperH
HC12
SPARC
VAX
Renesas R8C/M16C/M32C家族
A29K
ARC
C4x
CRIS
D30V
DSP16xx
FR-30
FR-V
Intel i960
IP2000
M32R
68HC11
MCORE
MMIX
MN10200
MN10300
NS32K
ROMP
Stormy16
V850
Xtensa
D10V
MicroBlaze
PDP-10
MSP430
Z8000
2.生成优化代码:GCC支持很多优化选项,可以生成效率更高的目标代码,提升程序的性能。
3.开源、免费并且具有适用性:GCC是免费的开源软件,适用于各种操作系统和编程语言,受到广泛的认可和使用。
4.支持重定位:GCC可以支持可执行文件或库文件中的symbol重定位,在软件的开发和维护过程中更加灵活。
5.优秀的兼容性:GCC支持标准C和C++语法,支持大多数的平台和操作系统,使用libtool、autoconf和automake工具可以方便的使用编译和构建自己的代码。
6.高质量的生成代码:GCC可以根据硬件架构和指令集生成高质量的目标代码,保证编程的高效性。
1、带来了一组关于链接时优化 (LTO) 框架可提升伸缩性和降低内存使用
2、在64位系统上需要8G内存来对Firefox进行优化,然而用了LTO后只需3G
3、支持更多C++11标准,包括原子性、C++11 内存模型,用户定义文字、别名声明、构造器委派和可扩展的语法等
4、改进对 Fortran 的支持
5、支持Google Go 1等等多项改进
6、进一步加强了对已C++11的支持
以上便是KKX小编给大家分享的Gcc编译器,这款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 Compiler Collection)是一款免费开源的编译器集合,是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通过使用优化技术可以生成高质量的目标代码,提高程序的执行效率和优化程度。
安装教程
一、安装了MinGW,在其根目录下的bin文件夹中发现有等文件。为了测试,在该文件夹中新建了一个test.bat文件,将其中内容写为:gcc test.cpp二、在该文件夹中创建test.cpp文件并将其内容设置为:
1.双击test.bat文件,发现该文件夹中产生了一个a.exe文件,执行该exe文件,发现其与预期编译效果一致,说明编译成功。gcc –o name test.cpp
2.可以生成名为name.exe的可执行程序
3.把指令改为gcc –e test.cpp >test.txt 后,提示错误gcc: no input files
4.而把参数E改为大写之后问题即解决:gcc –E test.cpp > test.txt
使用方法
一、Gcc编译器常用选项1.编译选项
gcc有超过100个的编译选项可用。具体的可以使用命令man gcc察看
2.优化选项
用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。有很多的选项可以告诉GCC在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。这些选项中最典型的就是-O和-O2。-O选项告诉gcc对源代码进行基本优化。-O2选项告诉GCC产生尽可能小的和尽可能快的代码。还有一些很特殊的选项可以通过man gcc察看
3.调试和剖析选项
GCC支持数种调试剖析选项。在这些选项中最常用的是-g和-pg.-g选项告诉gcc产生能被GNU调试器(如gdb)使用的调试信息,以便调试用户的程序。-pg选项告诉gcc在用户的程序中加入额外的代码,执行时,产生gprof用的剖析信息以显示程序的耗时情况
二、使用GDB方法
1.在命令行中键入gdb并按回车就可以运行gdb了,启动gdb后,能在命令行上制定很多的选项,也可以下面的方式来运行gdb: gdb filename 用这种方式运行gdb时,能直接指定想要调试的程序。在命令行上健入gdb -h得到一个有关gdb的选项的说明简单列表
2.编译代码以供调试,为了使gdb工作,必须使程序在编译时包含调试信息,调试信息包含程序里的每个变量的类型,在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联
三、内容错误查找
1.运行 gdb bugging 命令,装入 bugging 可执行文件
2.执行装入的 bugging 命令
3.使用 where 命令查看程序出错的地方
4.利用 list 命令查看调用 gets 函数附近的代码
5.唯一能够导致 gets 函数出错的因素就是变量string,用print命令查看string的值
6.在 gdb 中,我们可以直接修改变量的值,只要将 string 取一个合法的指针值就可以了,为此,我们在第11行处设置断
7.程序重新运行到第11行处停止,这时,我们可以用 set variable 命令修改 string 的取值
8.然后继续运行,将看到正确的程序运行结果
使用示例
一、示例代码int main(void)
{printf("hello\n")
return 0
二、预编译过程
1.这个过程处理宏定义和include,并做语法检查
2.可以看到预编译后,代码从6行扩展到了910行
三、编译过程
这个阶段,生成汇编代码
四、汇编过程
1.这个阶段,生成目标代码
2.此过程生成ELF格式的目标代码
五、链接过程
链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存
六、程序运行
七、以hello.c为例子,在这四个步骤中可以设置选项分别生成hello.i, hello.s, hello.o以及最终的hello文件:
hello.c: 最初的源代码文件
hello.i: 经过编译预处理的源代码
hello.s: 汇编处理后的汇编代码
hello.o: 编译后的目标文件,即含有最终编译出的机器码,但它里
面所引用的其他文件中函数的内存位置尚未定义
hello / a.out: 最终的可执行文件
文件类型
.c为后缀的文件,C语言源代码文件.a为后缀的文件,是由目标文件构成的档案库文件
.C,.cc或.cxx 为后缀的文件,是C++源代码文件且必须要经过预处理
.h为后缀的文件,是程序所包含的头文件
.i 为后缀的文件,是C源代码文件且不应该对其执行预处理
.ii为后缀的文件,是C++源代码文件且不应该对其执行预处理
.m为后缀的文件,是Objective-C源代码文件
.mm为后缀的文件,是Objective-C++源代码文件
.o为后缀的文件,是编译后的目标文件
.s为后缀的文件,是汇编语言源代码文件
.S为后缀的文件,是经过预编译的汇编语言源代码文件
执行程序
1、Pre-Processing预处理gcc -E hello.c -o hello.i //完成头文件和宏定义的展开,生成hello.i预处理文件
2、Compiling编译
gcc -S hello.i //生成汇编代码,生成hello.s的汇编文件
3、Assembling 汇编
gcc -c hello.s //生成二进制目标文件,生成hello.o文件
4、Linking 链接
gcc hello.o -o hello //链接相关库,生成可执行文件hello,没有后缀
PS:一般生成可执行程序,可以直接:gcc hello.c -o hello
命令
在gdb提示符处键入help,将列出命令的分类,主要的分类有:aliases:命令别名
breakpoints:断点定义
data:数据查看
files:指定并查看文件
internals:维护命令
running:程序执行
stack:调用栈查看
statu:状态查看
tracepoints:跟踪程序执行
键入help后跟命令的分类名,可获得该类命令的详细清单:
break NUM 在指定的行上设置断点
bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序
clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM
continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时
display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成
file FILE 装载指定的可执行文件进行调试
help NAME 显示指定命令的帮助信息
info break 显示当前断点清单,包括到达断点处的次数等
info files 显示被调试文件的详细信息
info func 显示所有的函数名称
info local 显示当函数中的局部变量信息
info prog 显示被调试程序的执行状态
info var 显示所有的全局和静态变量名称
kill 终止正被调试的程序
list 显示源代码段
make 在不退出 gdb 的情况下运行 make 工具
next 在不单步执行进入其他函数的情况下,向前执行一行源代码
print EXPR 显示表达式 EXPR 的值
处理器架构
AlphaARM
Atmel AVR
Blackfin
H8/300
IA-32〈x86〉 与x86-64
IA-64例如:Itanium
MorphoSys 家族
Motorola 68000
Motorola 88000
MIPS
PA-RISC
PDP-11
PowerPC
System/370,System/390
SuperH
HC12
SPARC
VAX
Renesas R8C/M16C/M32C家族
A29K
ARC
C4x
CRIS
D30V
DSP16xx
FR-30
FR-V
Intel i960
IP2000
M32R
68HC11
MCORE
MMIX
MN10200
MN10300
NS32K
ROMP
Stormy16
V850
Xtensa
D10V
MicroBlaze
PDP-10
MSP430
Z8000
GCC编译器亮点
1.灵活的交叉编译:GCC可以进行交叉编译,从一个平台往不同的平台生成可执行文件或库文件,具有很高的灵活性。2.生成优化代码:GCC支持很多优化选项,可以生成效率更高的目标代码,提升程序的性能。
3.开源、免费并且具有适用性:GCC是免费的开源软件,适用于各种操作系统和编程语言,受到广泛的认可和使用。
4.支持重定位:GCC可以支持可执行文件或库文件中的symbol重定位,在软件的开发和维护过程中更加灵活。
5.优秀的兼容性:GCC支持标准C和C++语法,支持大多数的平台和操作系统,使用libtool、autoconf和automake工具可以方便的使用编译和构建自己的代码。
6.高质量的生成代码:GCC可以根据硬件架构和指令集生成高质量的目标代码,保证编程的高效性。
更新日志
Gcc编译器 v10.0更新内容1、带来了一组关于链接时优化 (LTO) 框架可提升伸缩性和降低内存使用
2、在64位系统上需要8G内存来对Firefox进行优化,然而用了LTO后只需3G
3、支持更多C++11标准,包括原子性、C++11 内存模型,用户定义文字、别名声明、构造器委派和可扩展的语法等
4、改进对 Fortran 的支持
5、支持Google Go 1等等多项改进
6、进一步加强了对已C++11的支持
以上便是KKX小编给大家分享的Gcc编译器,这款GCC编译器是一款功能强大的编译器集合,具有广泛的适用性和灵活性,可以帮助开发人员快速地编写各种类型的应用程序,是软件开发过程中不可或缺的工具。
软件截图
猜你喜欢
- 查看详情 MinGW离线安装版42MB多国语言2024-05-16
- 查看详情 VS2017官方下载(Visual Studio 2017)14.9GB多国语言2024-05-16
- 查看详情 MyDiskTestU盘扩容检测工具官方下载7.15MB多国语言2024-05-16
- 查看详情 ZBrush免费版下载1.07GB多国语言2024-05-16
网友评论
网名
(您的评论需要经过审核才能显示)
发布评论
1楼
网友
24-11-10 16:15:04
我觉得很不错呀,符合我的预期,那些不会用的人就别怪Gcc编译器 V10.0绿色汉化版了
2楼
网友
24-08-18 08:27:08
有游戏吗
3楼
网友
24-08-17 13:17:48
还在研究Gcc编译器 V10.0绿色汉化版中,很多功能不会用~~
4楼
网友
24-07-20 13:03:11
下栽看看,
5楼
网友
24-06-20 05:09:35
找了那么多下载软件网站下载Gcc编译器 V10.0绿色汉化版,终于让我找到你了,我的Gcc编译器 V10.0绿色汉化版3.0
6楼
网友
24-05-31 14:35:32
热键是哪个啊!!!!!!!!!!
7楼
网友
24-05-22 02:44:44
找了好多网站,还是du114上下载的Gcc编译器 V10.0绿色汉化版靠谱,页面清爽,可以隐藏推送,不会妨碍正常办公
8楼
网友
24-05-10 05:21:54
垃圾Gcc编译器 V10.0绿色汉化版,简直就是在浪费我时间,谁用谁知道。呵呵。
9楼
网友
24-01-31 21:52:07
垃圾Gcc编译器 V10.0绿色汉化版垃圾Gcc编译器 V10.0绿色汉化版垃圾Gcc编译器 V10.0绿色汉化版,特别垃圾。
10楼
网友
23-12-14 18:24:23
下载测试了,很好用的,很其他人口中介绍的Gcc编译器 V10.0绿色汉化版一样