温馨提示×

centosgcc支持c11吗

小樊
47
2026-10-02 19:04:06
栏目: 智能运维

在 CentOS 上,GCC 是否支持 C11,取决于你安装的 GCC 版本。

一、结论速览

  • ✅ GCC ≥ 4.7:开始支持 C11(部分特性)
  • ✅ GCC ≥ 4.9:较完整支持 C11
  • ✅ GCC ≥ 5:基本完整支持 C11
  • ❌ CentOS 7 默认 GCC 4.8.5:支持 C11,但需手动开启
  • ✅ CentOS 8 / Stream / 使用 devtoolset:可轻松使用 C11

二、CentOS 各版本情况

1. CentOS 7(最常见)

  • 默认 GCC:4.8.5
  • 支持 C11 ✅,但不会默认启用

编译时需加参数:

gcc -std=c11 -Wall test.c -o test

或:

gcc -std=gnu11 test.c -o test

⚠️ 不写 -std=c11 时,默认是 GNU89(老标准)


2. CentOS 8 / CentOS Stream

  • 默认 GCC:8 / 9 / 10+
  • 原生支持 C11 ✅
gcc -std=c11 test.c

3. 使用 Software Collections(推荐)

如果你在用 CentOS 7,但想要新 GCC:

yum install centos-release-scl
yum install devtoolset-9-gcc devtoolset-9-gcc-c++
scl enable devtoolset-9 bash

然后:

gcc --version
gcc -std=c11 test.c

三、如何查看 GCC 是否支持 C11

gcc --version

并测试:

echo '_Thread_local int x;' | gcc -std=c11 -x c - -c

不报错说明支持。


四、常见注意点

  • _Generic、_Static_assert、_Thread_local 需 C11
  • pthread、atomics 在 C11 中更标准
  • CMake 示例:
set(CMAKE_C_STANDARD 11)

总结一句话

CentOS 上的 GCC 支持 C11,但老版本必须加 -std=c11,新版(8+)直接可用。

如果你是 CentOS 7 + GCC 4.8.5,我可以给你一条最稳的升级方案。

0 踩