C/C++生态工具链——gcc/g++编译器使用指南

本文介绍了GCC编译器及其子集g++,讨论了两者之间的区别,详细解析了C++编译过程,静态链接和动态链接的区别,以及常用的gcc/g++命令参数。此外,还涵盖了预处理、库文件类型和链接器搜索路径等内容。

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

一,关于GCC

    GCC的全称是GNU Compiler Collection,是GNU工具链中的一种。GCC不仅支持C/C++语言,还支持Fortran/Ada/Java等语言的编译。

    GCC和gcc是两个概念,GCC是工具链的集合,里面除了gcc/g++还包含了ccl,cclplus等组件。gcc/g++只是GCC工具链的一个子集。

二,g++和gcc的区别

    gcc可以判断出目标程序所使用编程语言的类别,会把xxx.c文件当作C语言编译,把xxx.cpp文件当作C++语言编译。而g++只把xxx.c和xxx.cpp一律都当作C++语言来编译。

    在编译C++文件的时候,g++会自动链接一些标准库或基础库,而gcc不会。当正在编译的C++代码文件依赖STL标准库的时候,为了使用STL,gcc命令需要增加参数–lstdc++。因此,虽然gcc和g++都可以编译C++语言程序,但是使用g++会更方便一些。

三,常见代码文件后缀名

(1)目标文件:

xxx.o,  操作系统:Linux, Mac

xxx.obj, 操作系统:windows

(2)二进制文件:

xxx(没有后缀名), 操作系统:Linux, Mac, FreeBSD,

xxx.exe, 操作系统:windows

xxx.hex,操作系统:嵌入式系统

(3)共享库文件,也叫动态库文件:

xxx.dll, 操作系统:windows

xxx.so, 操作系统:Linux

xxx.dylib, 操作系统:Mac

(4)静态库文件

xxx.a

四,C/C++语言的编译过程

1.预处理

    预处理命令声明了编译时需要的各种头文件和宏,比如包含哪些头文件、宏定义的扩展、在哪个代码段做条件编译等。涉及预处理的语法有:#define,#include,#ifdef...#endif等。

2.编译

    首先检查代码的规范性和语法错误等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员与背包客_CoderZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值