linux之Gcc使用

本篇文章摘自 http://blog.csdn.net/ljzcom/article/details/7213101

对于Gcc自带的很多命令行,只有具体编程里面用到了或者看到别人真真用到的,用的目的很清楚,才有价值记录下来,常用的记在脑子里面,这就够了。对于Linux基本编程工具的总结,之前都是总结在有道云笔记里面,觉的,那里面的太封闭了,写的好不好,只有自己知道。自己一直秉持着技术开放的心态,能够清晰的讲解出来的技术,才是你真正消化吸收的东西。

  Gcc功能介绍

   Gcc编译器完成从原始的C、C++、Objective-C等源文件向运行在特定CPU硬件上的目标代码的转换,对于待处理的文件,通过文件后缀名来识别。

       Gcc能够处理的后缀有*.c,*.cpp,*.c(面向对象的C),*.s汇编语言,*.h(头文件)

       目标文件可以是 *.o 目标文件,*.a库文件。

   一个完整的编译流程,具体分为预处理—>编译-->汇编--->链接

在这里,暂时只介绍非常常用的编译选项,以后用到什么选项时,会表明使用场景和对象,知道特定场景下的特定选项的作用,就可以了。

       -E : 只把源文件进行预处理

   -S : 只把源文件进行预处理和编译

   -c :  只把源文件进行预处理、编译和汇编

      -o  file : 把原文件进行预处理、编译、汇编和连接,最终生成可执行文件file(确实为a.out)

   -v : 把编译过程中详细输出信息都打印出来

      -Dmacro :定义一个宏,名称为macro,值为1(-Dmacro = defn,值为defn)

  -Ldir : 增加搜索库文件路径dir

      -Idir : 增加搜索头文件路径dir

      -lfoo: 链接名为libfoo的函数库

      -Wall :打印出所有警告信息

  -g:打开调试开关

     -On:优化强度(n = 0,1,2,3,数字越大,强度越高)

原文地址:https://www.cnblogs.com/cherishui/p/4032457.html