Linux工具之编译器gcc

本文详细介绍了GNU编译器套件(GCC)的功能与使用,包括其历史背景、支持的编程语言、基本用法及编译过程。GCC作为类Unix操作系统中的标准编译器,能处理多种语言,如C、C++、Java等。文章还解析了GCC的预处理、编译、汇编和链接四个阶段,并提供了具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、介绍

     GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器。
     GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言,后来经过不断扩展能够支持更多的编程语言,如 C++、Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名为GNU编译器套件。

二、基本用法

1、语法

gcc [选项] 源文件 [选项] [目标文件]

2、选项列表

选项含义
-E仅执行到预处理阶段
-S执行到编译阶段,将C代码编译成汇编代码
-c执行到汇编阶段,将汇编代码编译成为机器可识别的二进制指令代码
-static对生成的文件进行静态链接
-share对生成的文件进行动态链接,需要动态库
-g生成调试信息
-O0不进行优化处理
-O1,-O2,-O3优化处理,且优化级别依次升高
-w不生成任何警告信息
-Wall生成所有警告信息

三、编译过程

在这里插入图片描述

1、预处理

     功能:宏替换、头文件展开、去注释、条件编译
     实例:gcc -E test.c -o test.i

2、编译

     功能:语法分析及纠错,无错则将c代码编译成汇编代码
     实例:gcc -S test.c/test.i -o test.s

3、汇编

     功能:将汇编代码编译成为机器可识别的二进制指令代码
     实例:gcc -c test.s -o test.o

4、链接

     功能:生成可执行文件或库文件

(1)静态链接

     在编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。
     静态库命名方式:libc.alib是前缀,.a是后缀
     实例:gcc -static test.o -o test

(2)动态链接

     在编译链接时,并没有把库文件的代码加入到可执行文件中,而是在程序执行时由链接文件(记录函数的地址信息)加载库,这样可以节省系统的开销,但是运行时依赖库文件。
     动态库命名方式:libc.solib是前缀,.so是后缀
     实例:gcc test.o -o test
     要点:gcc默认生成的二进制程序是动态链接的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值