gcc 编译控制选项
前面已经讲过, gcc 的基本用法是:
$ gcc [选项] [文件名]
gcc 有很多编译控制选项,使得 gcc 可以根据不同的参数进行不同的编译处理,可供 gcc
调用的参数大约有 100 来个,但实际使用中并不会用到这么的多选项和参数。这里只介绍一
些最基本和常用的控制选项以及参数,如表 10.3 所列。
表 10.3 gcc 常用选项和参数

名称 功能描述
-c 只编译不链接。编译器只是将输入的.c 等源代码文件生成.o 为后缀的目标文件,通
常用于编译不包含主程序的子程序文件
-S 只对文件进行编译,不汇编和链接
-E 只对文件进行预处理,不编译汇编和链接
-o output_filename 确定输出文件的名称为 output_filename,这个名称不能和源文件同名。如果不给出
这个选项, gcc 就给出预设的可执行文件 a.out
-g 产生符号调试工具(GNU 的 gdb)所必要的符号信息,要想对源代码进行调试,就必
须加入这个选项。 g 也分等级,默认是-g2, -g1 是最基本的, -g3 包含宏信息
-DFOO=BAR 在命令行定义预处理宏 FOO,值为 BAR
-O 对程序进行优化编译、链接。采用这个选项,整个源代码会在编译、链接过程中进
行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速
度就相应地要慢一些
-ON 指定代码的优化等级为 N,可取值为 0、 1、 2、 3; O0 没有优化, O3 优化级别最高
-Os 使用了-O2 的优化部分选项,同时对代码尺寸进行优化
-Idirname 将 dirname 目录加入到程序头文件搜索目录列表中,是在预编译过程中使用的参数
-L dirname 将 dirname 目录加入到库文件的搜索目录列表中
-l FOO 链接名为 libFOO 的函数库
-static 链接静态库
-ansi 支持 ANSI/ISO C 的标准语法,取消 GNU 语法中与该标准相冲突的部分
-w 关闭所有警告,不建议使用
-W 开启所有 gcc 能提供的警告
-werror 将所有警告转换为错误,开启该选项,遇到警告都会中止编译
-v 显示 gcc 执行时执行的详细过程, 以及 gcc 和相关程序的版本号

gcc 编译控制选项的更多相关文章

  1. GCC编译警告选项总结

    一 前言 GCC有很多的编译选项,警告选项:指定头文件.库路径:优化选项.本文针整理一下GCC的警告选项,主要依据http://gcc.gnu.org/onlinedocs/gcc/Warning-O ...

  2. gcc编译常用选项

    我的博客:www.while0.com GDB调试: -g 生成的可执行文件才可以用gdb调试 (建议在发行版中用strip filename 来把这些调试信息去除) 开始调试. 以下是基础调试命令: ...

  3. Linux下gcc编译控制动态库导出函数小结

    根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility(" ...

  4. gcc编译 汇编 选项

    gcc生成main.out的步骤分解:<blockquote>main.c-----(-S 编译)-------->main.s-------(-c 汇编)------->ma ...

  5. GCC编译命令常用选项

    GCC是GUN Compiler Collection的简称,除编译程序外,还包含其他相关工具.GCC可将高级语言编写的源代码构建成计算机直接执行的二进制代码.GCC是Linux平台下最常用的编译程序 ...

  6. Linux gcc编译之-std选项

    用GCC编译代码时候后面带有-std=c++1z 的选项,这是指定c/c++的标准.具体的标准如下,详细信息可以看引用里面的详细说明

  7. gcc 编译 + 选项【转】

    转自:http://blog.csdn.net/princess9/article/details/6567678 一般来说要现有项目中的编译选项,设置新的project的编译选项 编译器 就是将“高 ...

  8. 使用CMake,且在GCC编译时指定相对源代码路径选项BUG的问题

    CMake的build.make,每次都是cd xxx目录,然后再编译 而编译时,GCC会取当前路径保存进调试信息的DT_AT_comp_dir,GCC的编译器选项-fdebug-prefix-map ...

  9. Linux 下 GCC 编译共享库控制导出函数的方法

    通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...

随机推荐

  1. 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

    今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的 ...

  2. 年轻人的第一个 Spring Boot 应用,太爽了!

    Spring Boot 大家都知道是啥吧? 还有不知道的来看这篇扫下盲:告诉你,Spring Boot 真是个牛逼货!. 顺便再往下看,栈长给你带来年轻人的第一个 Spring Boot 应用,撸码史 ...

  3. 20189220 余超《Linux内核原理与分析》第七周作业

    分析Linux内核创建一个新进程的过程 基础知识概括 操作系统内核实现操作系统的三大管理功能,即进程管理功能,内存管理和文件系统.对应的三个抽象的概念是进程,虚拟内存和文件.其中,操作系统最核心的功能 ...

  4. arcpy实例教程-上游流域下游流域查找

    arcpy实例教程-上游流域下游流域查找 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 功能:对于选定某一流域,查找其直接(一次)的上游流域和下 ...

  5. Activiti6 应用安装 activiti-admin,activiti-app,activiti-rest

    activiti6安装包中 1/直接将三个war包放入tomcat中,即可运行,使用H2内存数据库 2/使用mysql数据库运行 2.1/activiti-admin # security confi ...

  6. win10下通过npm成功搭建react开发环境

    1.安装node-v12.13.1-x64(LTS) 2.安装creatre-react-app: npm install -g create-react-app 3.通过create-react-a ...

  7. typescript - 9.装饰器

    装饰器:装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,属性或参数上,可以修改类的行为. 通俗的讲装饰器就是一个方法,可以注入到类.方法.属性参数上来扩展类.属性.方法.参数的功能. 常见的装 ...

  8. 360极速浏览器安装vue-devtools插件

    360极速浏览器扩展程序中心并没有提供vue-devtools插件,因此需要自己安装.本文介绍方法适用于所有Chrome内核浏览器. 本人已将编译后的Chrome插件包上传网盘,需要的可以直接下载使用 ...

  9. notepadd++中,如何根据某个字符将一行内容切割成多行?

    背景描述: 今天在做个事情,遇到下面字符,就想将每个词,如cluster,zookeeper都单独的一行 [cluster, activemq, controller, brokers, zookee ...

  10. echarjs—阿里历年双十一销售数据统计及预测

    阿里双十一数据统计 <!DOCTYPE html> <html> <head> <title>阿里历年双十一销售数据统计及预测</title> ...