TencentOS Server GCC 编译工具链使用

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

相关产品
TencentOS Server 产品页,含版本规格、价格与购买入口。

一、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不支持

三、安装

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

四、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 strippedhellooc.a: current ar archive

十、更多参考资料

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

赞 (0)
上一篇 4天前
下一篇 4天前