GCC 命令简明教程

前言

GCC,全称The GNU Compiler Collection,包含了 C, C++, Objective-C, Fortran, Ada, Go等语言的编译器前端以及这些语言所依赖的一些库文件。虽然现在的IDE基本可以搞定很多编译的事情,但是很多时候,b比如我们看源码的时候、自己编写一些Python C++扩展模块的时候等,使用IDE可能会比较繁琐,这时候就需要手动编译,需要看懂或者会编写编译脚本,这样,我们想在别人的基础上作些改动才有可能。因此有必要了解一下GCC。
需要说明的是,这里的GCC和你在命令行调用的gcc并不是一个东西。做个简单但很可能不完全正确的说明,GCC表示一套编译器的集合,而gcc,最开始表示GUN C Compiler,用于编译C,后来随着越来越多东西的加入,变成了GCC。现在gcc和g++只不过是GNU Compiler Collection的驱动程序。他们之间最大的区别可能就是他们链接的时候所使用的链接库不同。简单点记就是用gcc编译C,g++编译C++,当然,你也可以-x选项去使用gcc编译其他语言,例如使用gcc -xc++去编译C++。

参数类型分类

  1. 控制输出结果,如-c -S -E -o file -x language等;
  2. 控制当前编译源码所需遵循的语言标准,如-ansi -std=standard -fgnu89-inline等;
  3. 控制警告信息,如-Wall等;
  4. 控制调试,如-g -glevel*等;
  5. 控制优化,如-O -O0 -O1 -O2 -O3 -Os -Ofast -Og等;
  6. 控制预处理;
  7. 控制汇编;
  8. 控制链接,如-shared -shared-libgcc -symbolic -llibrary
  9. 控制代码生成;
  10. 控制编译过程所需要搜索的目录,如-Bprefix -Idir -I-
  11. 硬件依赖;
  12. 开发者相关。

这里只是分类简单介绍一些常用的选项。更多更详细的信息参阅参考文档的内容。

控制输出结果

我们知道,编译过程可以分为预处理、编译、汇编、链接四个阶段。这四个阶段按顺序进行,并且每个阶段都会产出用于下一个阶段的中间产物。由于编译并不是一步到位

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux中更新gcc命令的步骤如下: 1. 首先,为了不覆盖原来的gcc命令,需要备份原来的相关内容。可以执行以下命令: ``` mv /usr/bin/gcc /usr/bin/gcc485 mv /usr/bin/g++ /usr/bin/g++485 mv /usr/bin/c++ /usr/bin/c++485 mv /usr/bin/cc /usr/bin/cc485 mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak ``` 这样可以将原来的gcc命令备份到相应的目录下。 2. 安装新版本的gcc后,新的gcc命令位于/usr/local/bin目录下。为了让系统能够找到新的gcc命令,需要创建软链接。可以执行以下命令: ``` ln -s /usr/local/bin/gcc /usr/bin/gcc ln -s /usr/local/bin/g++ /usr/bin/g++ ln -s /usr/local/bin/c++ /usr/bin/c++ ln -s /usr/local/bin/gcc /usr/bin/cc ln -s /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6 ``` 这样可以创建软链接,将新版本的gcc命令与系统路径关联起来。 3. 如果需要在特定目录下使用新版本的gcc,可以使用cd命令切换到相应的目录,然后执行解压命令。例如,如果要将gmp文件解压到目录gcc-10.1.0,可以执行以下命令: ``` cd /opt2/test_other/debug_test/ tar -jvxf gmp-6.1.0.tar.bz2 --directory=/usr/local/gcc-10.1.0/ ``` 这样可以将gmp文件解压到指定目录。 请注意,更新gcc命令可能需要root权限或管理员权限。在执行任何系统命令之前,请确保您具有足够的权限。 #### 引用[.reference_title] - *1* *2* *3* [linux升级gcc版本详细教程](https://blog.csdn.net/weixin_43354152/article/details/129247408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值