gcc 编译控制选项
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 编译控制选项的更多相关文章
- GCC编译警告选项总结
一 前言 GCC有很多的编译选项,警告选项:指定头文件.库路径:优化选项.本文针整理一下GCC的警告选项,主要依据http://gcc.gnu.org/onlinedocs/gcc/Warning-O ...
- gcc编译常用选项
我的博客:www.while0.com GDB调试: -g 生成的可执行文件才可以用gdb调试 (建议在发行版中用strip filename 来把这些调试信息去除) 开始调试. 以下是基础调试命令: ...
- Linux下gcc编译控制动态库导出函数小结
根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility(" ...
- gcc编译 汇编 选项
gcc生成main.out的步骤分解:<blockquote>main.c-----(-S 编译)-------->main.s-------(-c 汇编)------->ma ...
- GCC编译命令常用选项
GCC是GUN Compiler Collection的简称,除编译程序外,还包含其他相关工具.GCC可将高级语言编写的源代码构建成计算机直接执行的二进制代码.GCC是Linux平台下最常用的编译程序 ...
- Linux gcc编译之-std选项
用GCC编译代码时候后面带有-std=c++1z 的选项,这是指定c/c++的标准.具体的标准如下,详细信息可以看引用里面的详细说明
- gcc 编译 + 选项【转】
转自:http://blog.csdn.net/princess9/article/details/6567678 一般来说要现有项目中的编译选项,设置新的project的编译选项 编译器 就是将“高 ...
- 使用CMake,且在GCC编译时指定相对源代码路径选项BUG的问题
CMake的build.make,每次都是cd xxx目录,然后再编译 而编译时,GCC会取当前路径保存进调试信息的DT_AT_comp_dir,GCC的编译器选项-fdebug-prefix-map ...
- Linux 下 GCC 编译共享库控制导出函数的方法
通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...
随机推荐
- tengine负载均衡高可用配置
环境 Tengine-master:192.168.109.100 Tengine-slave:192.168.109.101 tomcat01:192.168.109.102 tomcat02:19 ...
- 【CSP模拟赛】Freda的迷宫(桥)
题目描述 Freda是一个迷宫爱好者,她利用业余时间建造了许多迷宫.每个迷宫都是由若干房间和走廊构成的,每条走廊都连接着两个不同的房间,两个房间之间最多只有一条走廊直接相连,走廊都是双向通过. 黄昏 ...
- (转载)基于Linux C的socket抓包程序和Package分析
转载自 https://blog.csdn.net/kleguan/article/details/27538031 1. Linux抓包源程序 在OSI七层模型中,网卡工作在物理层和数据链路层的MA ...
- [linux]杀死同一个应用的所有进程
ps -ef|grep "c.py"|grep -v grep|awk '{print $2}' ps -ef|grep "c.py"|grep -v grep ...
- String.format()详细用法
String.format()字符串常规类型格式化的两种重载方式 format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字 ...
- Java 枚举使用总结
目录 1.枚举基础 1.1.创建枚举最简单的方式 1.2.简单使用 2.枚举的构造方法 2.1.使用注释方式说明 2.2.使用构造方法 2.3.使用带有构造器的枚举 3.就这些了? 3.1.需求 3. ...
- [编程开发]STB image读取学习
为了便于学习图像处理并研究图像算法, 俺写了一个适合初学者学习的小小框架. 麻雀虽小五脏俱全. 采用的加解码库:stb_image 官方:http://nothings.org/ stb_image. ...
- MiniProfiler 来分析 ASP.NET Core
使用 MiniProfiler 来分析 ASP.NET Core 应用 使用 MiniProfiler 来分析 ASP.NET Core 应用 MiniProfiler(https://minip ...
- 设置程序崩溃时产生 core 文件的配置
/* 不限制 core 文件的大小 */ ulimit -c unlimited /* 使用 pid 进行命名 */ echo " > /proc/sys/kernel/core_us ...
- mysql慢查询日记
mysql慢查询日记 <pre>#必须写到mysqld 注意给/tmp/showslowmysql.log 775权限 要写入权限[mysqld]#开启慢查询日记slow_query_lo ...