GCC--GNU C Compiler c语言编译器(远不止c语言)

介绍:

作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作 GCC 的时候,还只是把它当作仅仅一个C 程序语言的编译器;GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言,C++ 语言,Java 语言,Objective C 语言,Pascal 语言,COBOL 语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了 
另一方面,说到 GCC 对于各种硬件平台的支持,概括起来就是一句话:无所不在。几乎所有有点实际用途的硬件平台,甚至包括有些不那么有实际用途的硬件平台,比如 Don Knuth 设计的 MMIX 计算机,GCC 都提供了完善的支持。 
如果把我们自己的程序语言的实现建立于 GCC 之上,也立刻使得我们的程序语言的实现版本可以运行在几乎所有有用的硬件平台之上。这对于程序语言的作者来说,也是一个确实的有极大诱惑力的好处。
 
GCC常用选项

选项 
含义

--help 
--target-help 
显示 gcc 帮助说明。‘target-help’是显示目标机器特定的命令行选项。

--version 
显示 gcc 版本号和版权信息 。

-o outfile 
输出到指定的文件。

-x language 
指明使用的编程语言。允许的语言包括:c c++ assembler none 。 ‘none’意味着恢复默认行为,即根据文件的扩展名猜测源文件的语言。

-v 
打印较多信息,显示编译器调用的程序。

-### 
与 -v 类似,但选项被引号括住,并且不执行命令。

-E 
仅作预处理(code.i),不进行编译、汇编和链接。

-S 
仅编译到汇编语言(code.s),不进行汇编和链接。

-c 
编译、汇编到目标代码(code.o),不进行链接。

-pipe 
使用管道代替临时文件。

-combine 
将多个源文件一次性传递给汇编器。

其他GCC选项

更多有用的GCC选项:

命令 
描述

-shared

生成共享目标文件。通常用在建立共享库时。
-static
禁止使用共享连接。

-l library 
-llibrary 
进行链接时搜索名为library的库。 
例子: $ gcc test.c -lm -o test

-Idir 
把dir 加入到搜索头文件的路径列表中。 
例子: $ gcc test.c -I../inc_dir -o test

-Ldir 
把dir 加入到搜索库文件的路径列表中。 
例子: $ gcc -I/home/foo -L/home/foo -ltest test.c -o test

-Dname 
预定义一个名为name 的宏,值为1。 
例子: $ gcc -DTEST_CONFIG test.c -o test

-Dname =definition 
预定义名为name ,值为definition 的宏。

-ggdb 
-ggdblevel 
为调试器 gdb 生成调试信息。level 可以为1,2,3,默认值为2。

-g 
-glevel 
生成操作系统本地格式的调试信息。-g 和 -ggdb 并不太相同, -g 会生成 gdb 之外的信息。level 取值同上。

-Wall 

会打开一些很有用的警告选项,建议编译时加此选项。

-w 
禁止显示所有警告信息。

 

Optimization

-O0 
禁止编译器进行优化。默认为此项。

-O 
-O1 
尝试优化编译时间和可执行文件大小。

-O2 
更多的优化,会尝试几乎全部的优化功能,但不会进行“空间换时间”的优化方法。

-O3 
在 -O2 的基础上再打开一些优化选项:-finline-functions, -funswitch-loops 和 -fgcse-after-reload 。

-Os 
对生成文件大小进行优化。它会打开 -O2 开的全部选项,除了会那些增加文件大小的。
 

Standard

-ansi 
支持符合ANSI标准的C程序。这样就会关闭GNU C中某些不兼容ANSI C的特性。

-std=c89 
-iso9899:1990 
指明使用标准 ISO C90 作为标准来编译程序。

-std=c99 
-std=iso9899:1999 
指明使用标准 ISO C99 作为标准来编译程序。

GCC常用参数的更多相关文章

  1. CSAPP阅读笔记-gcc常用参数初探-来自第三章3.2的笔记-P113

    gcc是一种C编译器,这次我们根据书上的代码尝试着使用它. 使用之前,先补充前置知识.编译器将源代码转换为可执行代码的流程:首先,预处理器对源代码进行处理,将#define指定的宏进行替换,将#inc ...

  2. gcc常用参数列举

    [参数详解] -c    只激活预处理,编译,和汇编,也就是他只把程序做成obj文件  例子用法:  gcc -c hello.c  他将生成.o的obj文件    -S  只激活预处理和编译,就是指 ...

  3. [转]GCC常用参数详解

    简介gcc and g++现在是gnu中最主要和最流行的c & c++编译器 .gcc/g++在执行编译工作的时候,总共需要以下几步:1.预处理,生成.i的文件[预处理器cpp]2.将预处理后 ...

  4. GCC常用参数详解

    转载:http://www.cnblogs.com/zhangsir6/articles/2956798.html 简介gcc and g++现在是gnu中最主要和最流行的c & c++编译器 ...

  5. gcc and g++ 常用参数解释

    程序编译运行的过程 预处理.处理一些#include,#define命令,生成.i或者.ii文件: 编译.编译器进行语法分析,语义分析,中间代码生成,目标代码生成,优化,生成.s文件 汇编.汇编器把汇 ...

  6. Linux 之 编译器 gcc/g++参数详解

    2016年12月9日16:48:53 ----------------------------- 内容目录: [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++ ...

  7. GCC常用命令行一览表

    GCC常用命令行一览表 这些常用的 gcc/g++ 命令行参数,你都知道么?1. gcc -E source_file.c-E,只执行到预编译.直接输出预编译结果. 2. gcc -S source_ ...

  8. gcc g++ 参数介绍

    C和C++ 编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).源 ...

  9. scons用户指南翻译(附gcc/g++参数详解)

    scons用户指南 翻译 http://blog.csdn.net/andyelvis/article/category/948141 官网文档 http://www.scons.org/docume ...

随机推荐

  1. 坑爹CF April Fools Day Contest题解

    H - A + B Strikes Back A + B is often used as an example of the easiest problem possible to show som ...

  2. hdu 1286 找新朋友 (欧拉函数)

    Problem Description 新年快到了,"猪头帮协会"准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的 ...

  3. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  4. 基于NodeJs的网页爬虫的构建(一)

    好久没写博客了,这段时间已经忙成狗,半年时间就这么没了,必须得做一下总结否则白忙.接下去可能会有一系列的总结,都是关于定向爬虫(干了好几个月后才知道这个名词)的构建方法,实现平台是Node.JS. 背 ...

  5. Linux Shell脚本之自动修改IP

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  6. 【原创】Android开发之ADB及ADB SHELl命令的应用

    adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具.adb的工作方式比 ...

  7. softmax

    void LogisticRegression_softmax(LogisticRegression *this, double *x) { int i; double max = 0.0; doub ...

  8. ci 用本身 email 类发 email

    //比如 在控制器用 email 方法发送邮件 //用126的smtp 发送,示例邮件为 myemail@126.com 密码为 password public function email() { ...

  9. 初识pngdrive

    初识是第一次认识的意思,类似的词还有初见.初遇.初心.初愿.初恋.初吻……梦里相见如初识,很美好的感觉.同样,今天我们要认识的也是一个比较神奇美妙的东西,至少对于程序员来说. 我曾经尝试过很多文件加密 ...

  10. svn命令操作

    非超级用户:sudo 命令 svn info 查看svn地址 svn co 地址 检出仓库