GCC 的 C 标准探索

本文介绍了如何通过GCC的交叉编译工具链验证C17标准的支持。通过`arm-linux-gcc -std=gnu17 a.c -o a -v`命令,显示出GCC8.2已经包含C17支持。同时,引用GCC官方文档确认2018年发布的C17标准,并说明默认C标准为GNU11。使用不同的`-std`选项如`gnu17`、`gnu11`和`gnu90`等编译时,未出现任何警告。

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

测试交叉工具链:

$ arm-linux-gcc -std=gnu17 a.c -o a -v

 1 使用内建 specs。
 2 COLLECT_GCC=/home/sun/18.04-install/toolchain/bin/arm-linux-gcc.br_real
 3 COLLECT_LTO_WRAPPER=/home/sun/18.04-install/toolchain/bin/../libexec/gcc/arm-buildroot-linux-gnueabi/8.2.0/lto-wrapper
 4 目标:arm-buildroot-linux-gnueabi
 5 配置为:./configure --prefix=/home/sun/share/build/buildroot-2018.08.2/output/host --sysconfdir=/home/sun/share/build/buildroot-2018.08.2/output/host/etc --enable-static --target=arm-buildroot-linux-gnueabi --with-sysroot=/home/sun/share/build/buildroot-2018.08.2/output/host/arm-buildroot-linux-gnueabi/sysroot --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --with-gmp=/home/sun/share/build/buildroot-2018.08.2/output/host --with-mpc=/home/sun/share/build/buildroot-2018.08.2/output/host --with-mpfr=/home/sun/share/build/buildroot-2018.08.2/output/host --with-pkgversion='Buildroot 2018.08.2' --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath --enable-tls --enable-plugins --enable-lto --disable-libmudflap --enable-threads --without-isl --without-cloog --with-float=soft --disable-decimal-float --with-abi=aapcs-linux --with-cpu=cortex-a15 --with-float=soft --with-mode=arm --enable-languages=c,c++ --with-build-time-tools=/home/sun/share/build/buildroot-2018.08.2/output/host/arm-buildroot-linux-gnueabi/bin --enable-shared --enable-libgomp
 6 线程模型:posix
 7 gcc 版本 8.2.0 (Buildroot 2018.08.2) 
 8 COLLECT_GCC_OPTIONS='-std=gnu17' '-o' 'a' '-v' '-mcpu=cortex-a15' '-mfloat-abi=soft' '-mabi=aapcs-linux' '-marm' '-mtls-dialect=gnu' '-march=armv7ve'
 9  /home/sun/18.04-install/toolchain/bin/../libexec/gcc/arm-buildroot-linux-gnueabi/8.2.0/cc1 -quiet -v -iprefix /home/sun/18.04-install/toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabi/8.2.0/ -isysroot /home/sun/18.04-install/toolchain/arm-buildroot-linux-gnueabi/sysroot a.c -quiet -dumpbase a.c -mcpu=cortex-a15 -mfloat-abi=soft -mabi=aapcs-linux -marm -mtls-dialect=gnu -march=armv7ve -auxbase a -std=gnu17 -version -o /tmp/ccjATSqw.s
10 GNU C17 (Buildroot 2018.08.2) 版本 8.2.0 (arm-buildroot-linux-gnueabi)
11     由 GNU C 版本 7.3.0 编译,GMP 版本 6.1.2,MPFR 版本 3.1.6,MPC 版本 1.0.3,isl 版本 none
12 GGC 准则:--param ggc-min-expand=100 --param ggc-min-heapsize=131072
13 忽略重复的目录“/home/sun/18.04-install/toolchain/bin/../lib/gcc/../../lib/gcc/arm-buildroot-linux-gnueabi/8.2.0/include”
14 忽略不存在的目录“/home/sun/18.04-install/toolchain/arm-buildroot-linux-gnueabi/sysroot/usr/local/include”
15 忽略重复的目录“/home/sun/18.04-install/toolchain/bin/../lib/gcc/../../lib/gcc/arm-buildroot-linux-gnueabi/8.2.0/include-fixed”
16 忽略重复的目录“/home/sun/18.04-install/toolchain/bin/../lib/gcc/../../lib/gcc/arm-buildroot-linux-gnueabi/8.2.0/../../../../arm-buildroot-linux-gnueabi/include”
17 #include "..." 搜索从这里开始:
18 #include <...> 搜索从这里开始:
19  /home/sun/18.04-install/toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabi/8.2.0/include
20  /home/sun/18.04-install/toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabi/8.2.0/include-fixed
21  /home/sun/18.04-install/toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabi/8.2.0/../../../../arm-buildroot-linux-gnueabi/include
22  /home/sun/18.04-install/toolchain/arm-buildroot-linux-gnueabi/sysroot/usr/include
23 搜索列表结束。
24 GNU C17 (Buildroot 2018.08.2) 版本 8.2.0 (arm-buildroot-linux-gnueabi)
25     由 GNU C 版本 7.3.0 编译,GMP 版本 6.1.2,MPFR 版本 3.1.6,MPC 版本 1.0.3,isl 版本 none
26 GGC 准则:--param ggc-min-expand=100 --param ggc-min-heapsize=131072
27 Compiler executable checksum: 554fb17466f5d4550a145bf06addc691
28 a.c: 在函数‘audio_sem_wait’中:
29 a.c:140:10: 警告:implicit declaration of function ‘semtimedop’; did you mean ‘semop’? [-Wimplicit-function-declaration]
30    return semtimedop(sem_id, &sem_ops, 1, NULL);
31           ^~~~~~~~~~
32           semop
33 COLLECT_GCC_OPTIONS='-std=gnu17' '-o' 'a' '-v' '-mcpu=cortex-a15' '-mfloat-abi=soft' '-mabi=aapcs-linux' '-marm' '-mtls-dialect=gnu' '-march=armv7ve'
34  /home/sun/18.04-install/toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabi/8.2.0/../../../../arm-buildroot-linux-gnueabi/bin/as -v -march=armv7ve -mfloat-abi=soft -meabi=5 -o /tmp/cch1eWdG.o /tmp/ccjATSqw.s
35 GNU汇编版本 2.31.1 (arm-buildroot-lin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值