1, -E(大写),预处理

  • 例子:gcc -E test.cpp -o test.i
  • 预处理,把程序里的#开头的替换掉,比如#include,然后生成test.i

2,-P(大写),去掉预处理生成的杂乱信息

  • -E后生成的文件里面有很多杂乱的信息,用-P可以去掉杂乱的信息。

3,-S(大写),生成汇编文件

  • -masm=att 生成AT&T格式的汇编文件
  • -masm=intel 生成intel格式的汇编文件

4,-c(小写),只编译不链接,生成二进制文件

  • 把生成的二进制文件再转回汇编代码的方法:objdump -D main.o
  • objdump -M intel 和 objdump -M att,分别生成intel格式的汇编代码和AT&T格式的汇编代码

5,-D 指定宏

假如有下面的代码:

#include <stdio.h>
int main(){
#ifdef DEBUG
printf("DEBUG LOG\n");
#endif
printf("in\n");
}

在编译的时候,使用【-D DEBUG】,【printf("DEBUG LOG\n");】就可以被执行。

6,-Wall 显示更多的警告信

比如:定义了一个变量c,但是你没有使用它。加上-Wall就会出c没有被使用的警告信息,不加就不会出。

int main(){
int c;
#ifdef DEBUG
printf("DEBUG LOG\n");
#endif
printf("in\n");
}

警告信息:

test.c: In function ‘main’:
test.c:4:7: warning: unused variable ‘c’ [-Wunused-variable]
int c;
^

7,用gcc编译c++的源文件:【-lstdc++】

gcc -g hello.cpp -lstdc++

8,优化代码(大写的):-O1,-O2,-O3

优化内容:让代码效率更高,要逐级的实验,先从1开始。

比如有两个变量int a = 10, b = 10;优化后,就尽量使用一个等;函数调用的地方,直接把调用去掉,替换成函数的代码等。

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

gcc/g++ 编译参数的更多相关文章

  1. gcc/g++ 的参数总结(二)

    gcc 参数总结 如果是 c++,直接将 gcc 改为 g++ 即可. 1. gcc 编译流程 预处理,Pre-Processing:gcc -E test.c -o test.i //.i文件 编译 ...

  2. [转]Linux下用gcc/g++生成静态库和动态库(Z)

    Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅     ...

  3. gcc/g++ 链接库的编译与链接

    GCC编译步骤 gcc -E t1.c -o t1.i 预处理 gcc -S t1.i -o t1.s 转成汇编语言 gcc -c t1.s -o t1.o 转成机器码 gcc t1.o -o t1. ...

  4. CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加y ...

  5. Clang比 gcc/g++更人性化代码出错提示的C/C++编译器

    编译器方面的几个命令 gcc/g++ 一. 常用编译命令选项 常用用法 gcc -Wall test.c -o test gcc编译过程 .c ->(-E)-> .i[中间文件] -> ...

  6. Linux 之 编译器 gcc/g++参数详解

    2016年12月9日16:48:53 ----------------------------- 内容目录: [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++ ...

  7. ubuntu 14.04 更新 gcc/g++ 4.9.2

    ubuntu 14.04 更新 gcc/g++ 4.9.2 最近看到c++11非常的好用,尤其是自带了regex,于是稍微学了一下c++11的新特性.可是我在编译一个regex程序是却发现稍微复杂一点 ...

  8. [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件

    在Linux里面混了一个多月,vim编程用得甚爽.无奈前天将Linux里面的编程文件夹误删,而技术不精无法找回,悲痛欲绝.再者,无限怀念windows里面的游戏,并觉得现在在Linux里面也学不到什么 ...

  9. gcc/g++链接时.o文件及库的顺序问题

    折腾gcc/g++链接时.o文件及库的顺序问题 链接静态库的顺序问题 GCC 编译使用动态链接库和静态链接库--及先后顺序----及环境变量设置总结

随机推荐

  1. SharePoint布局页创建(实战)

    分享人:广州华软 极简 一. 前言 SharePoint有母版页及布局页,母版页控制页面头部.底部,而布局页则控制页面中间内容区域.通过布局页,可以快速修改页面内容区域. SharePoint的页面布 ...

  2. 同事搭一个测试RAC说节点2发现idle了,报ORA-00304

    [oracle@testrac2 11204]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Jan 16 1 ...

  3. cmd 执行Dcpromo错误:在该 SKU 上不支持 Active Directory 域服务安装向导,Windows Server 2008 R2 Enterprise 配置AD(Active Directory)域控制器

    今天,要安装AD域控制器,运行dcpromo结果提示:在该 SKU 上不支持 Active Directory 域服务安装向导. 以前弄的时候直接就通过了,这次咋回事?终于搞了大半天搞定了. 主要原因 ...

  4. 数据库【mongodb】之pymongo

    一个Python操作mongodb的模块 # coding=utf-8 from pymongo import MongoClient #实例化client,建立连接 client = MongoCl ...

  5. [LeetCode] 25. k个一组翻转链表

    题目链接: https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ 题目描述: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链 ...

  6. 【机器学习笔记一】协同过滤算法 - ALS

    参考资料 [1]<Spark MLlib 机器学习实践> [2]http://blog.csdn.net/u011239443/article/details/51752904 [3]线性 ...

  7. nginx部署静态网站

    实验环境 服务器:centos7.5 1核1G Nginx版本:nginx-1.14.2 主题 部署静态文件 根据不同url请求路径,定向到不同的系统文件夹 部署静态文件 假设nginx安装在“/us ...

  8. javascript权威指南笔记[6-8]

    1.三类对象,两类属性 2.原型链只有在查询的时候才会体现 3.对象属性访问 4.属性赋值 5.delete只是断开属性和宿主对象的关系,不会去操作属性中的属性 6.Object.ke() var m ...

  9. 使用 coverlet 查看.NET Core应用的测试覆盖率

    代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率. Visual Studio 2017的企业版可以直接查看测试的代码覆盖率, ...

  10. mysql的学习笔记(九)

    mysql不支持FULL JOIN时可用UNION ALL代替 SELECT t1.user_id,t2.user_name FROM t1 LIFT JOIN t2 ON t1.user_id = ...