GCC编译选项参数介绍

2023-11-10

        gcc和g++分别是gnu的c和c++编译器,下面是整理的常用编译选项参数:

#(1). -x: 设定文件所使用的语言,使文件后缀名无效,如下,执行完后生成test.o
gcc -c -x c++ test.jpg
#(2). -c: 只编译生成目标文件即*.o,只编译不链接生成可执行文件,如下,执行完后生成test.o
gcc -c test.cpp
#(3). -S: 把文件编译成为汇编源文件,如下,执行完后生成test.s
gcc -S test.cpp
#(4). -o: 指定生成的可执行文件,输出文件名称,gcc编译出来的文件缺省的是a.out,如下,执行完后生成test执行文件
gcc -o test -c test.cpp
#(5). -ansi: 关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof关键字,以及UNIX,vax等预处理宏),仅支持ANSI标准的C语法,如下
gcc -ansi -c test.cpp
#(6). -fno-asm: 禁止将asm,inline和typeof用作关键字,如下
gcc -fno-asm -c test.cpp
#(7). -funsigned-char或-fno-signed-char: 对char类型进行设置,将char类型设置成unsigned char,如下
gcc -funsigned-char -c test.cpp
gcc -fno-signed-char -c test.cpp
#(8). -fsigned-char或-fno-unsigned-char: 对char类型进行设置,将char类型设置成signed char,如下
gcc -fsigned-char -c test.cpp
gcc -fno-unsigned-char -c test.cpp
#(9). -include file_name: 在编译test.cpp文件需要aa.hpp文件的时候使用,而此时test.cpp文件中并没有#include "../aa.hpp",相当于在代码中使用#include "../aa.hpp",如下
gcc -c test.cpp -include ../aa.hpp
#(10). -Dmacro_name: 相当于C语言中的#define macro_name,如下
gcc -DTEST_MAIN -c test.cpp
#(11). -Dmacro_name=value: 相当于C语言中的#define macro_name value,如下
gcc -DTEST_MAIN=2 -c test.cpp
#(12). -Umacro_name: 相当于C语言中的#undef macro_name,如下
gcc -Umax -c test.cpp
#(13). -Idir_name: 在test.cpp文件中#include "aa.hpp"文件,而aa.hpp又没有和test.cpp在同一目录下时使用,gcc/g++会到-I指定的目录下查找,即指定额外的头文件搜索路径,如下
gcc -c test.cpp -I../
#(14). -dirafter dir_name: 如果-I指定的目录查找失败,将到这个目录里查找,如下
gcc -c test.cpp -I../../ -idirafter ../
#(15). -nostdinc: 使编译器不再系统缺省的目录里查找头文件,一般和-I一起使用,明确限定头文件的位置
gcc -c test.cpp -I../ -nostdinc
#(16). -C: 在预处理的时候,不删除注释信息,如下
gcc -C -c test.cpp -I../
#(17). -M: 生成文件关联信息,目标文件依赖的所有文件,如下
gcc -M -c test.cpp -I../
#(18). -MM: 生成文件关联信息,与-M相似,但是它将忽略由#include <file>造成的依赖关系,如下
gcc -MM -c test.cpp -I../
#(19). -Wa,option: 此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序
#(20). -Wl.option: 此选项传递option给链接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会链接程序
#(21). -llibrary_name: 指定链接时搜索指定的库,如下
gcc -c test.cpp -I../ -lpthread
#(22). -Ldir: 指定额外的库搜索路径,如下
gcc -c test.cpp -I../ -L../
#(23). -O0或-O1或-O2或-O3:编译器优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高,如下
gcc -O3 -c test.cpp -I../ -L../
#(24). -g: 指示编译器在编译的时候产生调试信息,如下
gcc -O3 -g -c test.cpp -I../ -L../
#(25). -gstabs: 此选项以stabs格式生成调试信息,但是不包括gdb调试信息,如下 
gcc -O3 -gstabs -c test.cpp -I../ -L../
#(26). -gstabs+: 此选项以stabs格式生成调试信息,并且包含仅供gdb使用的额外调试信息,如下
gcc -O3 -gstabs+ -c test.cpp -I../ -L../
#(27). -ggdb: 此选项将尽可能的生成gdb可以使用的调试信息,如下
gcc -O3 -ggdb -c test.cpp -I../ -L../
#(28). -static: 此选项将禁止使用动态库,一般编译出来的文件比较大,不需要什么动态链接库就可以运行,如下
cc -static -o test -c test.cpp -I../
#(29). -shared: 此选项将尽可能使用动态库,一般编译出来的文件比较小,如下
gcc -shared -o test -c test.cpp -I../
#(30). -tradional: 试图让编译器支持传统的C语言特性,如下
gcc -traditional -o test -c test.cpp -I../
#(31). -E: 预编译后停下来,生成后缀为*.i的预编译文件,如下
gcc -E -o test.i test.cpp -I../
#(32). -w: 不生成任何警告信息,如下
gcc -w -o test -c test.cpp -I../
#(33). -Wall: 生成所有警告信息,如下
gcc -Wall -o test -c test.cpp -I../
#(34). -pedantic: 当gcc在编译不符合ANSI/ISO C语言标准的源代码时,将产生相应的警告信息,如下
gcc -pedantic -o test test.cpp
#(35). -Werror: 要求gcc将所有的警告信息当成错误进行处理,如下
gcc -Werror -o test test.cpp
#(36). -Wcast-align: 当源程序中地址不需要对齐的指针指向一个地址需要对齐的变量地址时则产生一个警告,如下
gcc -Wcast-align -o test test.cpp
#(37). -p或-pg: 会将剖析(profiling)信息加入到最终生成的二进制文件中,剖析信息对于找出程序的性能瓶颈很有帮助,如下
gcc -p -o test test.cpp
gcc -pg -o test test.cpp
#(38). -save-temps: 保存编译过程中生成的一些中间文件,如test.s, test.ii,如下
gcc -save-temps -o test test.cpp
#(40). -pipe: 使用管道代替编译中临时文件,如下
gcc -pipe -o test test.cpp
#(41). -ftime-report: 统计编译消耗的时间并显示报告,如下
gcc -ftime-report -o test test.cpp
#(42). -fmem-report: 显示所有的静态内存分配,如下
gcc -fmem-report -o test test.cpp
#(43). -march: 指定目标架构选项,如下
gcc -march=native -Q --help=target | grep march
#(44). -fpic或-fPIC: 如果支持目标机,编译器就生成位置无关目标码,适用于共享库,如下
gcc -fpic -o test test.cpp
#(45). -fno-rtti: 禁用运行时类型信息,如下
gcc -fno-rtti -o test test.cpp
#(46). -fno-exceptions: 禁用异常机制,如下
gcc -fno-exceptions -o test test.cpp

        更详细的GCC编译选项参数介绍可以参考官网: https://gcc.gnu.org/onlinedocs/gcc/

        GitHub: https://github.com/fengbingchun/Linux_Code_Test  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GCC编译选项参数介绍 的相关文章

  • 如何从我自己的脚本向 Fish shell 提供制表符补全?

    我运行的是 Ubuntu 13 10 和 Fish 2 1 0 我想自己编写一个 Python 脚本来从命令行执行一些任务 该脚本将需要命令行参数 我怎样才能编写我的脚本 以便 Fish 可以请求并获取给定参数的可能值 潜在值列表是动态的
  • 使用 android AudioTrack 在左或右扬声器中播放声音

    我正在应用程序中的 AudioTrack 的帮助下播放声音 但我想在特定扬声器 耳朵中播放声音 即左扬声器或右扬声器或两个扬声器 以下代码是我用来播放声音的 private AudioTrack generateTone double fr
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • android webview 函数 onPagefinished 被调用两次

    我的android webview功能onPageFinished被调用两次 我不知道为什么 但它在 android 2 2 上运行良好 但当我将其升级到 4 时 它就不起作用了 代码附在下面 Code Override public vo
  • 毕加索动画加载图像

    我有以下代码在毕加索中加载图像 使用可绘制的占位符在图像下载时显示 不过 我想要的是一个动画旋转进度条样式的旋转器 它可以在图像加载时不断地旋转 就像我在大多数专业应用程序中看到的那样 毕加索似乎不支持这一点 只支持静态图像可绘制 有没有办
  • Android 应用被 Google Play 拒绝

    我最近向 Google Play 商店提交了一个 Android 应用程序 但收到一条消息说我的应用程序已被拒绝 我不确定问题是什么 也找不到确切的解决方案 拒绝原因 违反了禁止行为条款 内容政策 经过定期审核后 我们确定您的应用程序支持
  • 导航抽屉默认片段

    我是一名新手开发人员 我正在将导航抽屉与 android support v7 集成到我的应用程序中 我有一个问题 当我启动应用程序时 主要布局是这样的
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 无法获取 Facebook 传入请求

    我正在尝试在我的 Facebook android 游戏应用程序中实现发送数据并接受该数据 我正在关注https developers facebook com docs android send requests notification
  • 如何以编程方式启动 ssh 服务器 android,以及如何获取连接到设备的用户名和密码

    我正在开发像这样的应用程序sshdroid 我想在 Android 操作系统上打开 ssh 连接 并且我想从电脑连接应用程序 我使用了 JSCH lib 但是这个lib用于将android连接到pc 我的要求是pc到android 任何人都
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • Android 从命令行停止模拟器

    这个问题与如何通过命令行关闭Android模拟器 https stackoverflow com questions 5912403 how to shut down android emulator via cmd 但是 在尝试第一个答案
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 如何确保应用程序在 Linux 上持续运行

    我试图确保脚本在开发服务器上保持运行 它会整理统计数据并提供网络服务 因此它应该会持续存在 但一天中有几次 它会因未知原因而消失 当我们注意到时 我们只需再次启动它 但这很麻烦 并且某些用户没有权限 或专有技术 来启动它 作为一名程序员 我
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • Android ScrollView fillViewport 不工作

    我有一个简单的布局 名称位于顶部 按钮位于屏幕底部 或者超出该按钮 以防我添加更多项目 所以我使用带有 LinearLayout 的 ScrollView 如下所示

随机推荐

  • 学习iot_小熊派IoT开发板系列教程正式发布——免费学习

    小宅按 小熊派开源社区针对小熊派IoT开发板首次规划了小熊派未来的系列教程 从基础到进阶的设计 可适应具有不同基础的开发者 通过该系列教程的学习 开发者能够轻松掌握IoT产品的开发 该系列教程包括单片机基础 LiteOS操作系统基础 通信外
  • [第五空间 2021]pklovecloud

    除了按部就班的根据代码来写序列化
  • 42 访问者模式(Visitor模式)详解

    行为型模式 模板方法 Template Method 模式 策略 Strategy 模式 命令 Command 模式 职责链 Chain of Responsibility 模式 状态 State 模式 观察者 Observer 模式 中介
  • stm32---基本定时器(TIM6,TIM7)

    STM32F1的定时器非常多 由两个基本定时器 TIM6 TIM7 4个通用定时器 TIM2 TIM5 和两个高级定时器 TIM TIM 组成 基本定时器的功能最为简单 类似于51单片机内定时器 通用定时器是在基本定时器的基础上扩展而来 增
  • dump文件分析工具_jvm系列:dump文件深度分析

    JVM dump java内存dump是jvm运行时内存的一份快照 利用它可以分析是否存在内存浪费 可以检查内存管理是否合理 当发生OOM的时候 可以找出问题的原因 那么dump文件的内容是什么样的呢 我们一步一步来 获取JVM dump文
  • super()

    super 关键字 关键字的理解 父类中定义了该方法 但是子类中重写了该方法 使用super来修饰这个方法 在调用的时候调用父类的方法 super关键字的使用 1 super理解为父类 2 super可以用来调用 属性方法和构造器 3 su
  • 【Maven】Maven slf4j-api 出现 NoClassDefFoundError:org/slf4j/event/LoggingEvent

    1 背景 程序偶然报错这个 然后我查找了一下 发现这个包是1 7 7版本的 然后我想知道那个版本加入了这个东东 于是去查了一下 可以发现 在1 7 14版本之前都没有和这个包 1 7 14之后就全都有了 换个版本就好了
  • 【速度收藏】20个常用的Python技巧,太赞啦

    Python的可读性和简单性是其广受欢迎的两大原因 本文介绍20个常用的Python技巧来提高代码的可读性 并能帮助你节省大量时间 下面的技巧将在你的日常编码练习中非常实用 1 字符串反转 使用Python切片反转字符串 Reversing
  • 02-express安装apidoc生成接口文档

    02 express安装apidoc生成接口文档 1 安装 npm i apidoc 2 在项目根目录下创建 apidoc json name news是项目接口文档 version 0 1 0 description 新闻接口文档 tit
  • SpringCloud之Feign传递Json参数(个人使用)

    SpringCloud之Feign传递Json参数 个人使用 Client端 启动类 SpringBootApplication EnableDiscoveryClient EnableFeignClientspublic class Fe
  • 条款11:优先选用删除函数,而非private 未定义函数

    使用场景 比如在自定义类中 为了阻止其他程序员使用 拷贝构造 等函数 我们常用的用法 将该函数定义为private 不去定义只是声明 或者delete 区别 区别一 delete 可以修饰任何函数 private 只能修饰类 类对象 的成员
  • myeclipse java错误提示_myeclipse常见错误集锦 及解决方案

    1 An internal error occurred during Add Deployment Container with path org eclipse jdt launching JRE CONTAINER org eclip
  • vcxsrv连linux黑屏,通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)

    当然网络上已经有很多相关教程了 但是对于我的情况那些方法都不完全正确以至于我不能使用图形化界面 所以如果你查了很多方法也不能使用的话可以看看这篇 这是我的系统参数 开门见山 启动 VcXsrv 在 Windows 上下载 VcXsrv 并安
  • 词向量实践(gensim)

    词向量训练步骤 分词并去停用词 词频过滤 训练 项目完整地址 https github com cyandn practice tree master Word2Vec gensim中Word2Vec参数解释 主要参数介绍如下 senten
  • 基于Matlab的变压器铁芯截面优化设计

    基于Matlab的变压器铁芯截面优化设计 前言 优化思路 Matlab程序运行结果 结果分析 代码 前言 变压器是电力系统中非常重要的设备 在变压器设计过程中 给定的铁心直径条件下 铁心截面积越大 填充率越高 变压器经济指标越好 因此铁心截
  • WIN10 编译ffmpeg(包含ffplay)

    1 安装MSYS2 Win10 搭建MSYS2环境 cloud yq的博客 CSDN博客 2 编译SDL SDL是编译生成ffplay的基础 不需要生成ffplay可不编译SDL 1 下载地址 https www libsdl org do
  • Mall谷粒商城(基础篇的开发)

    项目简介 Mall商城项目致力于打造一个完整的大型分布式架构的电商平台 采用先阶段流行的前后端分离模式编写 Mall商城是一套电商项目 包括前台的商城系统以及后台管理系统 基于SpringCloud SpringCloud Alibaba
  • 基于51单片机的HX711模块

    一 项目介绍 基于51单片机的HX711称重计 最大称重量为5kg 并且在LCD1602上显示数值 可设置称重物品单价 称重精度可由按键key调节 误差可达0 传感器在某宝上买的 需要可以找我拿连接 二 HX711简介 HX711是一款专为
  • Database returned an invalid datetime value. Are time zone definitions for your database installed?

    Django gt python manage py runserver时报错 Database returned an invalid datetime value Are time zone definitions for your d
  • GCC编译选项参数介绍

    gcc和g 分别是gnu的c和c 编译器 下面是整理的常用编译选项参数 1 x 设定文件所使用的语言 使文件后缀名无效 如下 执行完后生成test o gcc c x c test jpg 2 c 只编译生成目标文件即 o 只编译不链接生成