gcc 编译选项常用参数(-S -c -E -o)

前言

在编译C语言程序中,gcc是最常用的编译器,本文主要说明gcc中最重要,最基本的参数,知道这几个参数的作用,大多数场景下的编译任务我们都可以完成了。本文也借这几个参数,说明一段c语言代码是如何编译成为机器识别的代码的。

常用参数功能说明

本文主要说明-E,-S,-c,-o 四个编译选项,他们分别对应C语言程序编译中的几个步骤。
以编译程序test.c为例

  1. -E: 预处理,主要是进行宏展开等步骤,生成的文件微test.i

    gcc -E test.c

  2. -S: 编译,生成汇编代码,生成的文件为test.S

    gcc -S test.c

  3. -c: 汇编:生成机器码,生成的文件未test.o

    gcc -c test.c

  4. (-o): 链接:生成可执行文件

    gcc test.c (-o test)

    我们需要注意,-o本质上是一个重命名选项。无论有没有-o选项,最后都会执行链接的步骤。
    当不使用-o选项时,执行命令gcc test.c,生成的是默认的a.out文件。这个名字太丑啦,所以一般我们用-o重命名一下, 使用命令gcc test.c -o test,生成可执行的test文件

gcc 编译选项常用参数(-S -c -E -o)相关推荐

  1. GCC编译选项参数介绍

    gcc和g++分别是gnu的c和c++编译器,下面是整理的常用编译选项参数: #(1). -x: 设定文件所使用的语言,使文件后缀名无效,如下,执行完后生成test.o gcc -c -x c++ t ...

  2. C/C++之Gcc常用参数

    gcc是GNU旗舰产品,目前基本上就是和Unix捆绑在一起分发的.这个东西功能强大,有多达上千个选项,其用户手册也有将近一万行.虽然其中的多数选项平时很少用到,但是不管装软件还是写程序,往往都会用到g ...

  3. 【转载】gcc 使用中常用的参数及命令

    本文转载自:http://www.cnblogs.com/yaozhongxiao/archive/2012/03/16/2400473.html 如需转载,请注明原始出处.谢谢. --------- ...

  4. Linux+gcc设置断点,gcc/g++常用编译选项和gdb常用调试命令

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? gcc/g++编译器是我们写编译C/C++程序时离不开的编译工具,而gdb又是调试C/C++程序的利器,这一篇文章我们记 ...

  5. GCC编译选项--创建与使用库

    系统函数库使用 linux系统函数库位于/usr/lib和/lib目录下 #include <math.h> #cc test.c -lm -o test 动态库创建 1).编译时指定-f ...

  6. 【GCC】gcc警告选项汇总--编辑中|gcc编译选项

    目录 前言 请求或取消警告选项 GCC编译选项 参考原文:https://blog.csdn.net/qq_17308321/article/details/79979514 前言 警告:不是错误的, ...

  7. Linux | 编译原理、gcc的命令参数、自动化构建工具 make/Makefile

    文章目录 编译原理 预处理 编译 汇编 链接 gcc的常用命令参数 make 和 Makefile 的概念 make的运行 通配符 自动化变量 伪目标.PHONE:[命令] 编译原理 在解释 make ...

  8. gcc/g++ 的参数总结(二)

    gcc 参数总结 如果是 c++,直接将 gcc 改为 g++ 即可. 1. gcc 编译流程 预处理,Pre-Processing:gcc -E test.c -o test.i //.i文件 编译 ...

  9. ALSA音频编程常用参数详细说明

    ALSA音频编程常用参数详细说明 ALSA简介 音频采样回放过程 音频采样过程 音频回放过程 PCM及其相关参数 PCM简介 参数说明 实例分析 PCM接口编程 WAV音频格式 WAV简介 WAV格式 ...

最新文章

  1. c语言二十四点游戏,C语言解24点游戏程序
  2. 非极大值抑制_非极大值抑制(Non-Maximum Suppression)
  3. python之functools partial
  4. BZOJ3862Little Devil I——树链剖分+线段树
  5. 机器学习入门---------numpy
  6. SQL之 UNION ALL 和UNION
  7. 乔布斯和任正非相比,谁更厉害?
  8. linux java执行_linux下运行java
  9. 精妙SQL语句 (笔记)【转】
  10. 剑指offer (01):赋值运算符函数 (C++ 实现)
  11. python网址编码转换_python字符串与url编码的转换实例
  12. (推荐)jQuery性能优化指南
  13. Paypal如何实现循环扣款(订阅)?
  14. 三目表达式的错误使用
  15. 传智播客风清扬视频------异常简述
  16. 磁盘列阵技术介绍及其部署
  17. vue下拉el-select二级联动
  18. c++手机编程软件_今天小编推荐几款好用的手机编程APP!
  19. 位运算实现加减乘除运算
  20. Python中的strip()用法

热门文章

  1. 常见服务器类型及其简单介绍
  2. 骗子举报查询系统高级版源码
  3. JavaScript Web APIs部分参考pink老师ppt(网页常见的js案例)
  4. vivo Z1i的usb调试模式在哪里,打开vivo Z1iusb调试模式的流程
  5. Jextson tx2,AGX xavier,GTX 1080Ti,Quadro P4000, i5 cpu,计算能力对比
  6. 小学生计算机的起源与发展ppt,计算机的起源与发展历程ppt课件.ppt
  7. leetcode 1647
  8. 电视屏幕太伤眼,五个地方降低亮度,来缓解眼睛痛.
  9. Idea 合并分支只选取部分文件的办法
  10. 如何将废旧显示器改造为家用电视机