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(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...
随机推荐
- windows 共享网络
windows 共享网络 今天单位的网络突然断了,光猫LOS亮红灯,宽带报修.等了半天还没来,下面科室要上报资料,急着用网, 通过windows的共享网络+无线网卡暂时用我的手机流量. 找了一台电脑插 ...
- 在python中使用elasticsearch 需要注意的一些问题
1, py es client 使用是 http ,java api 使用是 tcp 2, es.scroll() 方法 在查询多个索引的时候会报 : elasticsearch.exception ...
- maven依赖 dependency中scope=compile 和 provided区别
问题再现 上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是provided的情况,比如如下: <dependency> <groupId&g ...
- shell | crontab 定时任务
crontab工具 linux下自带的定时任务执行器 常用命令:crontab -l //显示用户的crontab文件的内容crontab -e //编辑用户的crontab文件的内容crontab ...
- nginx 二级目录反向代理
location /faceapi/ { #default_type application/json; # return 200 '{"status":"success ...
- node 部署教程二
转:https://www.cnblogs.com/yesyes/p/7168449.html 这篇文章主要介绍如何在服务端跑vuejs的项目,如果上一篇教程你成功输出了hello world,那这一 ...
- WebGL学习笔记(七):输入和动画
目前为止,我们绘制出来的3D物体都是静止的,接下来我们需要让桌面上的小盒子可以根据我们按键(上下键)前进后退: 输入方面,监听按键和鼠标消息直接在document上添加对应的监听就行了: 动画这块,我 ...
- Java3d 案例程序
今天偶尔翻出了很久以前写的java3d程序,很怀念曾经探索java3d解析.渲染ifc数据的日子 package com.vfsd.test0621; import java.applet.Apple ...
- git 如何同步本地tag与远程tag
问题场景:同事A在本地创建tagA并push同步到了远程->同事B在本地拉取了远程tagA(git fetch)->同事A工作需要将远程标签tagA删除->同事B用git fetch ...
- react项目中element的DatePicker回显
element的DatePicker获取value的时候是日期对象如下,可以提交的时候查看参数 2019-06-30T17:02:02.000Z 如果是console.log打印出来的话,是这样的 ...