栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux GCC常用命令和GCC编译过程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux GCC常用命令和GCC编译过程

文章目录
    • 一、简介
    • 二、GCC程序编译过程
    • 三、程序编译过程
    • 1、代码如下
    • 2、编译
    • (1)在控制台输入vi test.c
    • (2)执行命令:gcc -o test test.c
    • 3、分步编译
    • (1)预处理
    • (2)编译
    • (3)汇编
    • (4)连接
    • 四、个人总结
    • 五、参考文献

一、简介

GCC的意思也只是GNU C Compiler而已。经过了这么多年的发展,GCC已经不仅仅能支持C语言:它现在还支持Ada语言、C++语言、Java语言、ObjectiveC语言、Pascal语言、COBOL语言,以及支持函数式编程和逻辑编程的Mercury 语言,等等。而GCC也不再单只是GNUC语言编译器的意思了,而是变成了GNU Compiler Collection也即是GNU编译器家族的意思了。另一方面,说到GCC对于操作系统平台及硬件平台支持,概括起来就是一句话:无所不在。

二、GCC程序编译过程

共分四个阶段进行
1、预处理(Pre-Processing)
2、编译(Compiling)
3、汇编(Assembling)
4、链接(linking)

三、程序编译过程 1、代码如下
//test.c
#include
int main(viod)
{
     printf("Hello word!n");
     return 0;
}

一步到位编译指令:gcc test.c -o test

2、编译 (1)在控制台输入vi test.c


(2)执行命令:gcc -o test test.c

3、分步编译 (1)预处理

gcc -E test.c -o test.i 或gcc -E test.c

可以输出HelloWorld.i文件中存放着HelloWorld.c经预处理之后的代码。打开HelloWorld.i文件,看一看,就明白了。后面那条指令,是直接在命令行窗口中输出预处理后的代码.

gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。在本例中,预处理结果就是将stdio.h 文件中的内容插入到HelloWorld.c中了。

(2)编译

预处理之后可直接对生成的test.i文件编译,生成汇编代码:gcc -s test.i -o test.s

gcc的-S选项,表示在程序编译期间,在生成汇编代码后,停止,-o输出汇编代码文件。

(3)汇编

生成汇编代码文件HelloWorld.s以后,需要gas汇编器负责将其编译为目标文件,如下:

$ gcc –c test.c
或者:
$ gcc -c test.c –o test.o
或者:
$ gcc -c test.i -o test.o

(4)连接

$ gcc test.o –o test 生成连接,可执行文件(HellWorld重新生成的可执行文件)

gcc连接器是gas提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。

附加的目标文件包括静态连接库和动态连接库。

对于上一小节中生成的test.o,将其与C标准输入输出库进行连接,最终生成程序test可执行文件

输入命令:gcc test.o –o test

四、个人总结

通过对gcc编译四个过程的学习,更加充分的深入了解的gcc编译背后的原理和故事

五、参考文献

https://blog.csdn.net

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323735.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号