1. 语法

cc [-c|-S|-E] [-std=standard]

[-g] [-pg] [-Olevel]
           [-Wwarn...] [-Wpedantic]
           [-Idir...] [-Ldir...]
           [-Dmacro[=defn]...] [-Umacro]
           [-foption...] [-mmachine-option...]

[-o outfile] [@file] infile...

2. 解释

[-c]

cc foobar.c

  就会把 foobar.c 通过以上的步骤编译出来。如果你有多个文件要编译,只要输入

仅仅编译文件,不会连接。如果你只想检查你写的测试程序的语法的话,这个选项非常有用。或者你会使用 Makefile

[-o]

cc -o foobar foobar.c

可执行文件是 foobar

[-g]

产生一个可调试的可执行文件。编译器会在可执行文件中植入一些信息,这些信息能够把源文件中的行数和被调用的函数联系     起来。在你一步一步调试程序的时候,调试器能够使用这些信息来显示源代码。这是 非常 有用的;缺点就是被植入的信息让       程序变得更大。通常情况下,开 发一个程序的时候我们经常使用 -g ,但是我们在编译一个 “release 版本” 的程序的时候,如果     程序工作得让人满意了,我 们就不使用 -g 编译。

cc -g foobar.c

这会产生一个可调试版本的程序。

[-O]
产生一个优化版本的可执行文件。编译器会使用一些聪明的技巧产生出比普通编译产生的文件执行更快的可执行文件。可以在 -O 加上数字来使用更高级的优化。但是这样做经常会暴露出编译器的优化器中的一些 错误。例如,2.1.0 版本的 FreeBSD 中的 cc 在某些情况 下使用了 -O2 的话,会产生出错误的代码。

优化通常只在编译一个 release 版本的时候才被打开。

%
cc -O -o foobar foobar.c

这会产生一个优化版本的 foobar 。

-O和 -O1指定1级优化

-O2 指定2级优化

-O3 指定3级优化

-O0指定不优化

$cc -c O3 -O0 hello.c

当出现多个优化时,以最后一个为准!!

[-I]

可指定查找include文件的其他位置.例如,如果有些include文件位于比较特殊的地方,比如/usr/local/include,就可以增加此选项如下:

$cc -c -I/usr/local/include -I/opt/include hello.c

此时目录搜索会按给出的次序进行.

[-E]

这个选项是相对标准的,它允许修改命令行以使编译程序把预先处理的C文件发到标准输出,而不实际编译代码.在查看C预处理伪指令和C宏时,这是很有用的.可能的编译输出可重新定向到一个文件,然后用编辑程序来分析:

$cc -c -E hello.c >cpp.out

此命令使include文件和程序被预先处理并重定向到文件cpp.out.以后可以用编辑程序或者分页命令分析这个文件,并确定最终的C语言代码看起来如何.

[-M]

自动找寻源文件中包含的头文件,并生成一个依赖关系.于是由编译器自动生成的依赖关系,这样一来,你就不必再手动书写若干文件的依赖关系,而由编译器自动生成了。需要提醒一句的是,如果你使用GNU的C/C++编译器,你得用“-MM”参数,不然,“-M”参数会把一些标准库的头文件也包含进来。

[-D]

允许从编译程序命令行定义宏符号

一共有两种情况:一种是用-DMACRO,相当于在程序中使用#define MACRO,另一种是用-DMACRO=A,相当于程序中的#define MACRO A.如对下面这代码:
#ifdefine DEBUG

printf("debug message\n");

#endif

编译时可加上-DDEBUG参数,执行程序则打印出编译信息

[-Wall ]
打开所有 cc 的作者认为值得注意的警告。不要只看这个选项的名字,它并没有打开所有 cc 能够注意到的所有警告。

[-ansi ]
关闭大多数,但并不是所有,cc 提供的非 ANSI C 特性。不要只看选项的名字,它并不严格保证你的代码会兼容标准。

[-pedantic ]
关闭 所有 cc 的非 ANSI C 特性。

  没有这些选项,cc 能允许你按照标准使用一些非标准的扩展。有一些扩展非常有用,但不能与其他编译器兼容──实际上,这个标准的主要目的之一就是允许我们写出可以在任何系统上的由任何编译器编译的代码。这就叫做 可移植代码

  通常来说,你应该让你的代码尽可能的可以移植。否则你就不得不完全重写你的代码以便能够在其他地方运行之──而且谁知道几年后你是否还会用它?

%
cc -Wall -ansi -pedantic -o foobar foobar.c

  这会在检查 foobar.c 对标准的兼容性以后产生一个 foobar 可执行文件。

[-Ldirname] 
指定连接库的搜索目录,-l(小写L)指定连接库的名字

cc ,gcc 命令解释相关推荐

  1. linux下的cc/gcc命令

    linux系统的C编译器为gcc,它是GNU推出的功能强大的编译工具,因为UNIX系统的编译器为cc,所以在Linux系统还保留一个链接cc,用于和UNIX的向后兼容. 其中g++和c++与gcc和c ...

  2. GCC 命令选项使用详解

    GCC 命令行详解[转帖] 1.gcc包含的c/c++编译器 gcc.cc.c++.g++ gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2.gcc ...

  3. Shell脚本学习-阶段二十七-命令解释一

    文章目录-命令解释一 前言 as expr gcc gcov gdb indent ld ldconfig ldd make mktemp nm objdump perl php protoize u ...

  4. Shell脚本学习-阶段二十七-命令解释二

    文章目录-命令解释二 前言 emacs jed joe nano================ pico sed=================== vi,vim============ mtyp ...

  5. Windows命令行下常用网络命令解释大全

    命令行下常用网络命令解释大全 1.Arp 显示和修改"地址解析协议"(ARP) 所使用的到以太网的 IP 或令牌环物理地址翻译表.该命令只有在安装了 TCP/IP 协议之后才可用. ...

  6. linux-gcc 找不到命令,为什么显示gcc命令没有找到?

    ai0909 于 2011-11-01 14:21:05发表: {:2_97:} itank 于 2011-02-27 15:26:44发表: 你试试 gcc hello.c -o hello wus ...

  7. C 语言编译器 gcc 命令详解

    Linux 系统中最重要的软件开发工具是 gcc,在 Linux 系统中,c89.cc 和 gcc 这些命令基本上都指向系统的C语言编译器,通常是GNU C编译器,或都简称 gcc.在 UNIX 系统 ...

  8. SQL SERVER DBCC命令解释

    SQL SERVER DBCC命令解释 八点钟起床一直搞到现在,好多还不太记得,先放上来以后慢慢修改 2007-05-01 12:56:28 --------------------- --1 dbc ...

  9. 【转】nagios 命令解释

    nagios 命令解释 check_ssh                  界面拼装参数格式如下共3个元素:                          命令!端口!连接超时时间        ...

最新文章

  1. php 上万关键字匹配,JavaScript 上万关键字瞬间匹配实现代码
  2. apache的产品分类说明
  3. 分布式事务中间件 Fescar - 全局写排它锁解读 1
  4. python 查看数据结构类型_python 数据结构类型总结(示例代码)
  5. leetcode python3 简单题160. Intersection of Two Linked Lists
  6. 推动隐私计算技术,360数科提出分割式神经网络框架
  7. ros开发增加clion常用模板及初始化配置(四)
  8. 计算机语言底层用汉语拼音设计,对汉语拼音设计方案认识(10页)-原创力文档...
  9. 调用阿里云的通用文字识别-高精版识别接口,识别图片中的文字详解
  10. 生活中有趣的6个数学小故事
  11. GWT项目创建时遇到的问题
  12. 【MATLAB】批量修改文件名
  13. lightgbm画决策树方法
  14. 如何提取王者荣耀模型
  15. 清北学堂培训2019.4.6
  16. erp知识基础-会计
  17. 【单片机项目】基于STM32的智能小车设计(三)软件设计
  18. 用账户锁定策略防止黑客暴力破解管理员帐户登录密码
  19. Java学习笔记18nbsp;ArrayListnbsp;和Linke…
  20. ctf从零到入门0x04:(转载)ctf中最全的(脑洞大开的加密方法)

热门文章

  1. 计算机各外设的作用,外设在计算机中的作用及传输方式.doc
  2. 数据结构的逻辑结构和物理结构区别与联系
  3. REC_RE时延测量
  4. Everything 全局搜索之正则表达式Regex
  5. 15分钟了解Java性能优化以及一切你想知道的
  6. ImportError: cannot import name ‘MobileNetV2‘ from ‘keras.applications‘解决方法
  7. 中职计算机基础应用教程ppt,多媒体在中职计算机应用基础教学中的应用
  8. 微信公众号扫码模拟登录
  9. PHP连接MySQL数据常用的函数_PHP操作Mysql常用函数
  10. LED流水灯多种点灯方式代码0基础讲解