帮你快速理解、总结文档立即下载

GCC 编译工具链使用

最近更新时间:2026-08-27 18:07:01
我的收藏

GCC 简介

GCC 全称为 GNU Compiler Collection,即 GNU 编译器套件。是 GNU 项目开发的编译器软件,最初支持 C/C++,后拓展支持 ObjectC、Go、Fortran 等多种语言,发展为一个编译器套件,现在主要由 FSF 支持维护。

TencentOS Server 4 上的 GCC 选型及维护政策

TencentOS Server 4 预装 GCC 版本为12.x,在 GCC 上游社区的12版本完整维护周期内,本系统将会及时跟进小版本的更新,直至本发行版本不再维护。

TencentOS Server 4上的 GCC 组件

组件
X86_64
Aarch64
说明
gcc
支持
支持
GCC 的 C 编译器
gcc-c++
支持
支持
GCC 的 C++编译器,有些发行版称为 g++
gccgo
支持
支持
GCC 的 Golang 编译器
gfortran
支持
支持
GCC 的 Fortran 编译器
gnat
支持
支持
GCC 的 Ada 编译器
gcc-objc
支持
支持
GCC 的 ObjectC 编译器
gcc-objc++
支持
支持
GCC 的 ObjectC++编译器
gcc-gdc
支持
支持
GCC 的 D 语言编译器
gcc-gm2
不支持
不支持
GCC 的 M2语言编译器,GCC13新增,TencentOS Server 4不支持

安装

# gcc
dnf install gcc
# gcc-c++
dnf install gcc-c++
# gccgo
dnf install gccgo
# gfortran
dnf install gfortran
# libtsan
dnf install libtsan
# 使用tsan进行开发
dnf install libtsan-devel
# 其他组件请参看1.2,按照组件名进行安装
# 请注意,libgomp不提供devel包

GCC 使用介绍

GCC 的使用流程简介 - 以 C 语言为例

以一个名为 helloworld.c 的 C 程序源码文件为例:
#include <stdio.h>
int main() {
printf("hello,world!\\n");
return 0;
}
从安装到执行该源码的流程如下:
# 安装C编译器
dnf install gcc
# 编译为二进制
gcc -o helloworld helloworld.c
# 执行
./helloworld

GCC 执行程序的更多功能介绍

编译器对源码处理过程可以分为预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)四个过程。下面我们来尝试使用 gcc 进行分步骤处理。
以一个名为 hellooc.cpp 的文件为例:
#include <iostream>
using namespace std;

char* hellooc(char* oc) {
cout << "hello, " << oc << "!" << endl;
return oc;
}
需要安装相对应的 GCC 编译器开发环境。
#安装 GCC C++编译器和 C++开发库、运行时
dnf install gcc-c++ libstdc++-devel

预处理

首先进行预处理:
g++ -E -o hellooc.i hellooc.cpp
# 结果过长,本文档不做结果展示,请自行执行查看
less hellooc.i

编译

然后执行编译(狭义的编译),结果为汇编代码:
g++ -S -o hellooc.s -fPIC hellooc.i
# 结果过长,本文档不做结果展示,请执行以下命令查看
less hellooc.s

汇编编译

继续执行汇编编译,结果为未链接的目标文件:
g++ -c -o hellooc.o hellooc.s

链接

最后执行链接,结果为链接库:
# 动态链接
g++ -o hellooc.so -shared -lstdc++ hellooc.o

# 静态链接
ar rcs hellooc.a hellooc.o
结果如下:
hellooc.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=92a45a52fc17fa866d765841e159d57271e767b1, not stripped

hellooc.a: current ar archive

更多参考资料

本文档仅用于开发者了解本系统上的 GCC 组件支持情况、安装方式和简单的使用示例,更多 GCC 和开发资料,请查看 GCC 官方文档 和第三方资料。