横琴建设局网站,热铁盒虚拟主机,wordpress添加过滤器,深圳 做网站 互联来自#xff1a; 51CTO GCC使用入门通常所说的GCC是GUN Compiler Collection的简称#xff0c;除了编译程序之外#xff0c;它还含其他相关工具#xff0c;所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。GCC是Linux平台下最常用的编…来自 51CTO GCC使用入门通常所说的GCC是GUN Compiler Collection的简称除了编译程序之外它还含其他相关工具所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。GCC是Linux平台下最常用的编译程序它是Linux平台编译器的事实标准。同时在Linux平台下的嵌入式开发领域GCC也是用得最普遍的一种编译器。GCC之所以被广泛采用是因为它能支持各种不同的目标体系结构。例如它既支持基于宿主的开发(简单讲就是要为某平台编译程序就在该平台上编译)也支持交叉编译(即在A平台上编译的程序是供平台B使用的)。目前GCC支持的体系结构有四十余种常见的有X86系列、Arm、PowerPC等。同时GCC还能运行在不同的操作系统上如Linux、Solaris、Windows等。 ·详解GCC的下载和安装·Linux编程起步 GCC基本用法除了上面讲的之外GCC除了支持C语言外还支持多种其他语言例如C、Ada、Java、Objective-C、FORTRAN、Pascal等。本系列文章中我们不仅介绍GCC的基本功能还涉及到一些诸如优化之类的高级功能。另外我们还考察GCC的一些映像操作工具如size和objcopy等这将在后续的文章中加以介绍。二、程序的编译过程对于GUN编译器来说程序的编译要经历预处理、编译、汇编、连接四个阶段如下图所示从功能上分预处理、编译、汇编是三个不同的阶段但GCC的实际操作上它可以把这三个步骤合并为一个步骤来执行。下面我们以C语言为例来谈一下不同阶段的输入和输出情况。在预处理阶段输入的是C语言的源文件通常为*.c。它们通常带有.h之类头文件的包含文件。这个阶段主要处理源文件中的#ifdef、 #include和#define命令。该阶段会生成一个中间文件*.i但实际工作中通常不用专门生成这种文件因为基本上用不到若非要生成这种文件不可可以利用下面的示例命令gcc -E test.c -o test.i在编译阶段输入的是中间文件*.i编译后生成汇编语言文件*.s 。这个阶段对应的GCC命令如下所示GCC -S test.i -o test.s在汇编阶段将输入的汇编文件*.s转换成机器语言*.o。这个阶段对应的GCC命令如下所示GCC -c test.s -o test.o最后在连接阶段将输入的机器代码文件*.s(与其它的机器代码文件和库文件)汇集成一个可执行的二进制代码文件。这一步骤可以利用下面的示例命令完成GCC test.o -o test上面介绍了GCC编译过程的四个阶段以及相应的命令。下面我们进一步介绍常用的GCC的模式。三、GCC常用模式这里介绍GCC追常用的两种模式编译模式和编译连接模式。下面以一个例子来说明各种模式的使用方法。为简单起见假设我们全部的源代码都在一个文件test.c中要想把这个源文件直接编译成可执行程序可以使用以下命令$ GCC -o test这里test.c是源文件生成的可执行代码存放在一个名为test 的文件中(该文件是机器代码并且可执行)。-o 是生成可执行文件的输出选项。如果我们只想让源文件生成目标文件(给文件虽然也是机器代码但不可执行)可以使用标记-c 详细命令如下所示$ GCC -c test.c默认情况下生成的目标文件被命名为test.o但我们也可以为输出文件指定名称如下所示$ GCC -c test.c -o上面这条命令将编译后的目标文件命名为mytest.o而不是默认的test.o。迄今为止我们谈论的程序仅涉及到一个源文件现实中一个程序的源代码通常包含在多个源文件之中这该怎么办没关系即使这样用GCC处理起来也并不复杂见下例$ GCC -o test first.c second.c third.c该命令将同时编译三个源文件即first.c、second.c和 third.c然后将它们连接成一个可执行程序名为test。