Linux gcc编译器默认C99标准编译

本文解释了Linux中gcc编译器默认使用C89标准,介绍了如何通过gcc-E-dM命令查询标准版本以及如何在编译时添加-c99参数或在.bashrc文件中设置alias永久更改默认标准为C99。

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

在我们初用Linux的时候,用gcc编译器编译代码的时候,发现for循环不可用,这是为什么呢?

因为gcc默认c89版本编译

可以使用如下代码查询你的gcc编译器默认标准

 gcc -E -dM - </dev/null | grep "STDC_VERSION"

输出结果和 C 标准的对应关系如下:

如果是 #define __STDC_VERSION__ 199901L,则默认支持的是 C99 标准;

如果是 #define __STDC_VERSION__ 201112L,则默认支持的是 C11 标准;

如果是 #define __STDC_VERSION__ 201710L,则默认支持的是 C17 标准;

如果没查到,则默认支持的是 C89 标准。

那怎么使用c99标准编译呢

可以编译时加如下命令:-std=c99

gcc -std=c99 yourfile.c -o yourprogram

如果不想每次都加这个代码该怎么操作呢?

可以在bash配置文件(如.bashrc或.bash_profile)中设置一个别名来简化编译命令。

第一步、打开配置文件

nano ~/.bashrc
或者
vim ~/.bashrc

第二步、在文件中添加别名

alias gcc='gcc -std=c99'

第三步、保存退出

第四步、需要重新加载该文件令该文件生效。在终端输入如下命令

source ~/.bashrc

之后再使用gcc命令进行编译时就是默认c99标准了

<think>好的,用户现在问的是关于Linux常用的编译器。我需要先回想之前的问题历史,用户之前问过如何将Qt项目迁移到VS2017,现在转向了Linux环境下的编译器,可能是在跨平台开发或者想学习Linux下的开发工具。 首先,用户可能是开发者,可能对编程有一定的基础,但可能对Linux环境不太熟悉。需要介绍常用的编译器,可能包括GCC、Clang这些主要的,以及一些其他工具如make、CMake。需要分清楚编译器和构建工具的区别,但用户可能不太清楚,所以需要明确说明。 接下来,用户可能需要知道每个编译器的特点、安装命令和使用示例。比如GCCLinux默认的,Clang以错误信息友好著称,Intel编译器优化性能好,但可能用户更多是普通开发者,可能更关注前两者。 还要考虑是否需要提到调试工具如GDB,虽然严格来说不是编译器,但开发过程中常用,用户可能感兴趣。另外,构建工具如make和CMake虽然不是编译器,但编译过程常会用到,需要简要说明它们的作用。 需要结构清晰,分点介绍每个编译器,给出安装命令和简单例子,这样用户可以直接参考使用。同时,注意使用中文,避免专业术语过于晦涩,但保持准确性。例如,解释GCC支持的语言,Clang的优点,Intel编译器的适用场景。 另外,用户可能对如何选择编译器有疑问,可以在总结部分给出建议,比如推荐GCC和Clang,根据项目需求选择。可能还需要提到交叉编译的情况,但可能用户暂时不需要,可以简单带过。 最后,检查是否有遗漏的重要编译器,比如嵌入式开发可能用的工具链,但可能用户的问题比较基础,所以保持主要几个即可。确保信息准确,比如安装命令在主流发行版中适用,如Ubuntu、CentOS等。</think>### Linux常用编译器介绍 --- #### **一、编译器核心工具** 在Linux开发中,编译器是代码转换为可执行程序的核心工具。以下是常用编译器及其特点: --- ##### **1. GCC(GNU Compiler Collection)** - **定位**:Linux默认编译器,支持C、C++、Fortran等语言。 - **特点**: - 稳定且兼容性强,适合大多数项目。 - 支持多平台交叉编译。 - **安装命令**: ```bash # Ubuntu/Debian sudo apt install gcc g++ # CentOS/RHEL sudo yum install gcc gcc-c++ ``` - **使用示例**: ```bash gcc hello.c -o hello # 编译C程序 g++ hello.cpp -o hello # 编译C++程序 ``` --- ##### **2. Clang/LLVM** - **定位**:GCC的替代品,以更清晰的错误提示和模块化设计著称。 - **特点**: - 编译速度较快,错误信息更易读。 - 与LLVM工具链集成(如静态分析工具`scan-build`)。 - **安装命令**: ```bash # Ubuntu/Debian sudo apt install clang llvm # CentOS/RHEL sudo yum install clang llvm ``` - **使用示例**: ```bash clang hello.c -o hello # 编译C程序 clang++ hello.cpp -o hello # 编译C++程序 ``` --- ##### **3. Intel C++ Compiler(ICC)** - **定位**:针对Intel CPU优化的高性能编译器。 - **特点**: - 生成代码效率高,适合科学计算或性能敏感项目。 - 需商业许可(社区版免费但有功能限制)。 - **安装**: - 从Intel官网下载安装包,或通过包管理器配置仓库后安装。 --- ##### **4. 其他编译器** - **TinyCC(TCC)**:轻量级C编译器,适合快速测试和小型项目。 ```bash sudo apt install tcc # Ubuntu安装 ``` - **Open64**:开源编译器,支持多核优化(常见于嵌入式开发)。 --- #### **二、构建工具与辅助工具** 编译器通常与构建工具配合使用,提升开发效率: --- ##### **1. Make** - **作用**:通过`Makefile`自动化编译流程。 - **示例**: ```makefile # Makefile示例 all: hello hello: hello.c gcc hello.c -o hello clean: rm -f hello ``` - **使用**: ```bash make # 编译 make clean # 清理 ``` --- ##### **2. CMake** - **作用**:跨平台的构建系统生成器,可生成`Makefile`或VS项目文件。 - **安装**: ```bash sudo apt install cmake # Ubuntu sudo yum install cmake # CentOS ``` - **使用示例**: 1. 编写`CMakeLists.txt`: ```cmake cmake_minimum_required(VERSION 3.10) project(Hello) add_executable(hello hello.c) ``` 2. 生成并编译: ```bash mkdir build && cd build cmake .. && make ``` --- ##### **3. Autotools(GNU Build System)** - **定位**:传统Linux项目的构建工具(如GNU软件)。 - **流程**: ```bash ./autogen.sh # 生成configure脚本 ./configure # 检测系统环境 make # 编译 sudo make install # 安装 ``` --- #### **三、调试与代码分析工具** - **GDB**:GNU调试器,用于定位程序崩溃或逻辑错误。 ```bash gdb ./hello # 启动调试 ``` - **Valgrind**:内存泄漏检测工具。 ```bash valgrind --leak-check=yes ./hello ``` - **Clang静态分析器**: ```bash scan-build clang hello.c -o hello ``` --- #### **四、如何选择编译器?** | **场景** | **推荐工具** | |---------------------------|----------------------------------| | 通用C/C++开发 | GCC 或 Clang | | 需要清晰的错误提示 | Clang | | 高性能计算或Intel CPU优化 | Intel C++ Compiler | | 嵌入式或交叉编译 | GCC交叉编译工具链(如`arm-linux-gnueabi-gcc`) | --- #### **五、总结** - **主要编译器**:GCC默认)、Clang(现代化替代)、ICC(高性能优化)。 - **构建工具**:Make(基础)、CMake(跨平台推荐)、Autotools(传统项目)。 - **调试工具**:GDB、Valgrind、Clang静态分析器。 根据项目需求选择工具链,通常优先使用GCC或Clang,结合CMake管理复杂项目。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值