gcc and g++ 常用参数解释
程序编译运行的过程
- 预处理。处理一些#include,#define命令,生成.i或者.ii文件;
- 编译。编译器进行语法分析,语义分析,中间代码生成,目标代码生成,优化,生成.s文件
- 汇编。汇编器把汇编代码翻译成机器码,生成.o文件
- 链接。链接器进行地址和空间分配,符号决议,重定位,生成.out文件。
编译器编译源代码后生成的文件叫做目标文件。目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有被调整。
gcc和g++的区别
都是GNU组织的编译器
不同点 :
- gcc处理.c文件是以c语言为标准,而g++都是以c++为标准。二者的标准并不通用。
- gcc在链接c++程序的过程中,不能自动连接c++程序所使用的库,必须加上-lstdc++。
- 编译阶段,g++会调用gcc来进行编译。
常用参数的解释
无选项。默认4个步骤全部执行,直接生成可执行文件,默认为a.out
gcc test.c
-o,链接。
gcc test.o -o test
-c, 只执行前三个步骤,生成obj文件
gcc -c test.c
-S,只执行前两个步骤,生成汇编代码,生成.s文件
gcc -S test.c
-E, 只执行第一个步骤,需要指定一个重定向的输出文件,或者直接生成.i文件
gcc -E test.c > test.log
gcc -E test.c | more- -include file。指定包含的文件
- -C 在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的。(暂时没用到)
- -O0;-O1;-O2;-O3.优化级别,O0无优化,O3优化最多,但是时间消耗也多。
- -g,在编译的时候,产生调试信息。
- -share, 编译动态库。
- -w,不产生警告信息
- -Wall,打印所有警告信息
-std=Cxx,指定编译的C版本
gcc and g++ 常用参数解释的更多相关文章
- [转] Linux中gcc,g++常用编译选项
http://blog.sina.com.cn/s/blog_5ff2a8a201011ro8.html gcc/g++ 在执行编译时,需要4步 1.预处理,生成.i的文件[使用-E参数] 2.将预处 ...
- [转]GCC常用参数详解
简介gcc and g++现在是gnu中最主要和最流行的c & c++编译器 .gcc/g++在执行编译工作的时候,总共需要以下几步:1.预处理,生成.i的文件[预处理器cpp]2.将预处理后 ...
- gcc与g++区别以及相关参数详解
---恢复内容开始--- 原文链接:g++和gcc的区别 一 .二者区别 gcc和g++都是GNU(一个组织)的编译器. 1.对于.c后缀的文件,gcc把它当做是C程序:g++当做是C++程序: 2. ...
- GCC常用参数详解
转载:http://www.cnblogs.com/zhangsir6/articles/2956798.html 简介gcc and g++现在是gnu中最主要和最流行的c & c++编译器 ...
- CSAPP阅读笔记-gcc常用参数初探-来自第三章3.2的笔记-P113
gcc是一种C编译器,这次我们根据书上的代码尝试着使用它. 使用之前,先补充前置知识.编译器将源代码转换为可执行代码的流程:首先,预处理器对源代码进行处理,将#define指定的宏进行替换,将#inc ...
- gcc/g++ 的参数总结(二)
gcc 参数总结 如果是 c++,直接将 gcc 改为 g++ 即可. 1. gcc 编译流程 预处理,Pre-Processing:gcc -E test.c -o test.i //.i文件 编译 ...
- angular-cli.json配置参数解释,以及依稀常用命令的通用关键参数解释
一. angular-cli.json常见配置 { "project": { "name": "ng-admin", //项目名称 &quo ...
- 常用cl编译命令参数解释
紧接前文,第一行cl命令如下: 1> cl /c /IC:\...\include /ZI /nologo- /W3 /WX- /sdl /Od /Oy- /D WIN32 /D _DEBUG ...
- gcc和g++
一.GCC GNU编译器套件(GNU Compiler Collection)包括C.C++.Objective-C.Fortran.Java.Ada和Go语言的前端,也包括了这些语言的库(如libs ...
随机推荐
- COPD——团队项目测试心得
写在前面: 测试结束了,也要和项目说拜拜了~这一学期时间飞快,痛并快乐着,想想人生如果是个软件,那我们用多长时间在做测试呢?恐怕是一辈子.很多人忙着追逐,却很少人能停下来审视自己,那些时常自省的,常能 ...
- C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化
一.字符串输入输出函数 1. cin.get() 逐个字符输入输出 2. cin 可以将整个字符串一次性输入,但是,cin将空格.Tab和回车键,因此不能用于数组的一次性输入. 注意:ci ...
- kafka consumer 0.8.2.1示例代码
package test_kafka; import java.util.ArrayList; import java.util.HashMap; import java.util.List; imp ...
- L1-035 情人节 (15 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805097018540032 以上是朋友圈中一奇葩贴:“2月14 ...
- CPU温度的实现
CPU温度需要安装的模块:apt-get install lm-sensors 然后再安装:pip install sensors.py 代码如下: #coding=utf-8import sen ...
- 关于position的一些问题
position属性: static:静止 relative:相对的 fixed:固定的 absolu:绝对的 position的一些实例子如下: HTML: <!DOCTYPE htm ...
- C#设计模式——单例模式的实现
1. 什么是单例 保证一个类只有一个实例的实现方法. 2. 使用场景 页面访问计数器 需要保持状态的工具类 需求很多,不能一一列举了 3. 实现方 非线程安全 /// <summary> ...
- C++面试笔记(3)
20. 浅拷贝与深拷贝 如何理解C++中的浅拷贝与深拷贝 深拷贝和浅拷贝 在进行对象拷贝时,当对象包含对其他资源的引用,如果需要拷贝这个独享所引用的对象,那就是深拷贝,否则就是浅拷贝 *** 21.构 ...
- page用法
分页一般场景用于查询所有数据 包引用 import org.springframework.data.domain.Page;import org.springframework.data.domai ...
- c++ — 运算符重载与strcmp自实现
#include <iostream> #include <string.h> #include <stdlib.h> using namespace std; c ...