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(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...
随机推荐
- process.env.NODE_ENV理解
1.理解NODE_ENV 在node中,有全局变量process表示的是当前的node进程.process.env包含着关于系统环境的信息.但是process.env中并不存在NODE_ENV这个东西 ...
- windows环境下安装nginx
(1)下载 官网:http://nginx.org/en/docs/windows.html 下载:http://nginx.org/en/docs/windows.html 点击:nginx/Win ...
- deepnude | 福利
程序好下载github有,但是没有lib,就是没有训练好的model. 以下是搜到的win平台程序的下载链接: magnet:?xt=urn:btih:7BE4EB8D640742D2FFEBD649 ...
- Netty 多客户端连接与通信
实现场景: 聊天 服务端,客户端A,客户端B,客户端C.当客户端发送消息给服务端后,服务端在将这条消息广播个所有客户端户端A,客户端B,客户端C. 需求1: 客户端上线后,会通知所有客户端上线. 如客 ...
- jmeter元件作用及执行顺序
jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系,那么随着它们的顺序和所在的域不同,它们在执行的时候,也会有很多不同. jmeter的test pla ...
- javascript submit() is not a function
<script> window.onload = function(){ document.getElementById('form').submit(); } </script&g ...
- 从ReentrantLock的实现看AQS的原理及应用 可重入锁
https://mp.weixin.qq.com/s/sA01gxC4EbgypCsQt5pVog
- 使用yarn代替npm作为node.js的模块管理器
使用yarn代替npm作为node.js的模块管理器 转 https://www.jianshu.com/p/bfe96f89da0e Fast, reliable, and secure d ...
- centos7.6环境编译安装php-7.2.24修复最新 CVE-2019-11043 漏洞
先编译安装php-7.2.24,然后编译安装扩展 主版本地址地址:https://www.php.net/distributions/php-7.2.24.tar.gz # 编译 php-7.2.24 ...
- C# redis客户端帮助类
需要在NuGet里面引用ServiceStack.Redis using ServiceStack.Redis; using ServiceStack.Redis.Generic; using Sys ...