#gcc hello.c
该命令将hello.c直接生成最终二进制可执行程序a.out
这条命令隐含执行了(1)预处理、(2)汇编、(3)编译并(4)链接形成最终的二进制可执行程序。这里未指定输出文件,默认输出为a.out。
从上面我们知道GCC编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。
GCC编译C源码有四个步骤:
预处理-----> 编译 ----> 汇编 ----> 链接
现在我们就用GCC的命令选项来逐个剖析GCC过程。
1)预处理(Pre-processing)
在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来,用户可以使用gcc的选项”-E”进行查看。
用法:#gcc -E hello.c -o hello.i
作用:将hello.c预处理输出hello.i文件。
2)编译阶段(Compiling)
第二步进行的是编译阶段,在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译 成汇编语言。用户可以使用”-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
选项 -S
用法:[root]# gcc –S hello.i –o hello.s
作用:将预处理输出文件hello.i汇编成hello.s文件。
[root@richard hello-gcc]# ls
hello.c hello.i hello.s
3)汇编阶段(Assembling)
汇编阶段是把编译阶段生成的”.s”文件转成二进制目标代码.
选项 -c
用法:[root]# gcc –c hello.s –o hello.o
作用:将汇编输出文件test.s编译输出test.o文件。
[root]# gcc -c hello.s -o hello.o
[root]# ls
hello.c hello.i hello.o hello.s
4)链接阶段(Link)
在成功编译之后,就进入了链接阶段。
无选项链接
用法:[root]# gcc hello.o –o hello.exe
作用:将编译输出文件hello.o链接成最终可执行文件hello.exe。
[root]# ls
hello.c hello.exe hello.i hello.o hello.s
运行该可执行文件,出现正确的结果如下。
[root@localhost Gcc]# ./hello
Hello World!
分享到:
相关推荐
他们都要用四个步骤中的一个或多个处理输入文件: 预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的 语言,但是对编译器来说,后缀名控制着缺省设定: gcc 认为...
第四步:将arm-linux-gcc-4.3.2.bz2解压到/usr/local/arm目录下 sudo tar xvf arm-linux-gcc-4.3.2.bz2 -C /usr/local/arm 第五步:进入到 /usr/local/arm cd /usr/local/arm cd 4.3.2 cd bin pwd得到arm-linux-gcc...
他们都要用四个步骤中的一个或多个处理输入文件: 预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的 语言,但是对编译器来说,后缀名控制着缺省设定:
他们都要用四个步骤中的一个或多个处理输入文件: 预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的 语言,但是对编译器来说,后缀名控制着缺省设定: gcc 认为...
13.4.2 GCC编译程序的安装与配置 13.5 GCC的优化 13.5.1 概述 13.5.2 窥孔优化 13.5.3 基于机器描述的窥孔优化 13.5.4 修改GCC源程序的窥孔优化 练习 第14章 面向对象语言的编译 14.1 面向对象语言的基本概念 14.2 ...
本实验为实现一个小型的 C 语言到 MIPS 汇编语言的编译器,需要完成以上所有步骤并验证测试正确。实验需要选择一个合适的 C 语言子集,能够体现 C 语言基本语法,特有关键字等,同时要能在这个子集的基础上写出具有...
C 和C++编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).
C程序成为可执行文件的四个阶段如下: 1.预处理2.编译3.组装4.连结 进行解释 1.预处理这是编译过程的第一阶段,其中扩展了预处理程序指令(最常见的是宏文件和头文件)。 要执行此步骤,gcc在内部执行以下命令。 ...
GCC编译时候,其实有四个步骤: 1、预处理:gcc -E hello.c -o hello.i 2、编译生成汇编语言:gcc -S hello.i -o hello.s 3、汇编:gcc -c hello.s -o hello.o 4、链接生成可执行文件:gcc hello.o -o hello 这时候...
GCC编译时候,其实有四个步骤: 1、预处理:gcc -E hello.c -o hello.i 2、编译生成汇编语言:gcc -S hello.i -o hello.s 3、汇编:gcc -c hello.s -o hello.o 4、链接生成可执行文件:gcc hello.o -o hello 这时候...
GCC编译时候,其实有四个步骤: 1、预处理:gcc -E hello.c -o hello.i 2、编译生成汇编语言:gcc -S hello.i -o hello.s 3、汇编:gcc -c hello.s -o hello.o 4、链接生成可执行文件:gcc hello.o -o hello 这时候...
GCC编译时候,其实有四个步骤: 1、预处理:gcc -E hello.c -o hello.i 2、编译生成汇编语言:gcc -S hello.i -o hello.s 3、汇编:gcc -c hello.s -o hello.o 4、链接生成可执行文件:gcc hello.o -o hello 这时候...
GCC编译时候,其实有四个步骤: 1、预处理:gcc -E hello.c -o hello.i 2、编译生成汇编语言:gcc -S hello.i -o hello.s 3、汇编:gcc -c hello.s -o hello.o 4、链接生成可执行文件:gcc hello.o -o hello 这时候...
7、将/TARGETDIR/include/中(jconfig.h, jerror.h, jmorecfg.h, jpeglib.h)四个头文件拷贝到:/usr/local/arm/3.4.1/arm-linux/include中。 将/TARGETDIR/lib中(libjpeg.la, libjpeg.so, libjpeg.so.62, ...
GDB是GNU开源组织发布的一个强大的linux下的程序调试工具,一般来说,GDB主要完成下面四个方面的功能: (1)、启动程序,可以按照用户自定义的要求运行程序。 (2)、可让被调试的程序在所指定的调置的断点处停住。...
xxx是编译出来的执⾏⽂件,运⾏编译出来的程序是sudo ./xxx WIFI程序hjduino.c 编译指令 gcc hjduino.c -o hjduino -lwiringPi -lpthread 运⾏命令 sudo -/hjduino 2000 循迹程序xj.c 编译指令 gcc xj.c -o xj -...
一、实验目的 1、理解进程并发执行的实质。...6、输入gcc ./zhanghaohao1.c与gcc ./zhanghaohao2.c编译。 五、程序代码 1、用lockf()来给每一个进程加锁,以实现进程之间的互斥 互斥代码: 六、实验结果
要尝试使用Arduino板(例如Arduino UNO)进行显示,请按以下步骤钩住四根电线: SDA-针脚A4 SCL-针脚A5 地-地VCC-5V 连接完所有组件后,将Arduino的USB端口连接到计算机,在“工具”->“串行端口”菜单中选择
Linux系统移植 目 录 第一部分 前言....................................................................................................................................8 1 硬件环境.........................
花了四个小时,终于在linux下把eclipse下java开发opencv给搞定了…至于为什么花这么久的时间…且听我慢慢讲… linux编译安装opencv 首先,linux下安装opencv其实不麻烦的,参考文档即可完成:...