lulix删除文件_关于g++的简单使用-Go语言中文社区

关于g++

g++  是GNU组织开发出的编译器软件集合(GCC)下的一个C++编译器。它是Unix 和 Linux  系统下标配的 基于命令行的 C++编译器。如果你的系统是Windows,可以按照下面的教程安装g++。

Windows下安装g++

一、下载minGW(适用于Windwow的GCC工具集合)

链接:http://pan.baidu.com/s/1eSceGCi                    (g++版本4.8.1,连接失效请回复提醒我下~)

密码:6fhh

二、解压到任何盘符。比如我解压到了E盘下的C++目录下

E:

|--C++

--MinGW

三、配置环境变量

0693bd16de40af91416e2b28f244e52d.png

g++ 的参数使用

--version

显示g++ 的版本 。

--target-help

显示特定平台环境的参数支持。比如嵌入式领域使用的avr-g++会对MCU 支持一些优化参数。

-std=

如:-std=c++11  ,使用C++11标准

-ansi

使用ANSI 标准,禁止GNU 标准特性,如 asm inline typeof 关键字,以及UNIX,vax等预处理宏。

-funsigned-char           #将程序中的char解析为unsigned char

-fno-signed-char         #将程序中的char解析为非signed char

-fsigned-char              #将程序中的char解析为signed char

-fno-unsigned-char    #将程序中的char解析为非unsigned char

你的编译器中,char类型是 signed char  还是  unsigned char?不太清楚。嗯,所以如果对范围敏感,应该明确定义unsigned char ,或者是 signed char 。上面4个参数就是指定g++将char解释为什么类型。

-O0

-O1

-O2

-O3

取英文单词Optimize(意为:优化)的第一个字母O,不是零哦。

编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高。

优化的是什么呢?生成的程序的大小和程序的执行速度。

-w

编译时,不显示任何警告消息。

-Wall

编译时,显示所有出现的警告消息。

C/C++源代码的编译过程:

92a99e0df6a2fbdf1c252863a62e8dab.png

-o 

输出编译后的结果到指定的文件file中。windows下默认编译输出a.exe,而linux则默认是a.out。-o不仅可以指定输出的可执行文件,还可以指定中间文件的输出,后面会用。

g++ hello.cpp -o hello.exe          # 输出指定的可执行文件 hello.exe

g++ -o hello.exe hello.cpp         # 同上

g++ hello.cpp                       #windows下输出的是a.exe,linux下输出的是a.out

-E

对源文件进行预处理,预处理后生成.i( 或者是 .ii)文件。通过此命令可以查看于处理器是如何“修改”我们的.cpp源文件的,以理解预处理的工作机制。生成的是文本文件。

g++ -E -o hello.i hello.cpp           #对hello.cpp进行预处理生成hello.i文件

-S

只进行预处理和编译,编译是C++编译器的核心操作,其结果就是将C++代码中转译为汇编代码,生成.s汇编文件。生成的依然是文本文件。

g++ -S -o hello.s hello.cpp          #生成汇编文件hello.s

-c

只进行 预处理, 编译,汇编操作,生成.o (.obj)文件,不进行链接。生成的是二进制文件。

g++ -c -o hello.o hello.cpp

-save-temps

顾名思义,就是保留编译产生的中间文件,使用这个参数,就没必要将前面的参数 -E  -S  -c  一个一个地使用了。

» ls -l | grep ^-

-rw-r--r-- 1 Luli None 689 Apr  3 14:12 cmd.cpp

» g++ -save-temps -o cmd.exe cmd.cpp

» ls -l | grep ^-

-rw-r--r-- 1 Luli None    689 Apr  3 14:12 cmd.cpp

-rwxr-xr-x 1 Luli None  93106 Apr  3 14:33 cmd.exe

-rw-r--r-- 1 Luli None 444403 Apr  3 14:33 cmd.ii

-rw-r--r-- 1 Luli None   1562 Apr  3 14:33 cmd.o

-rw-r--r-- 1 Luli None   2501 Apr  3 14:33 cmd.s

-M , -MD

输出源文件的#include指令 ( #include , #include"head_file" ) 引起的所有包含文件依赖。

举个栗子:

69c5a8ac3fa60e0848d784a6dd461da6.png

/*cmd.cpp*/

#include

intmain()

{return 0;

}

69c5a8ac3fa60e0848d784a6dd461da6.png

使用-M参数的效果:

-M参数可以查看源文件实质上包含的所有头文件

» g++ -M cmd.cpp

cmd.o: cmd.cpp e:c++mingwlibgccmingw324.8.1includec++cmath

e:c++mingwlibgccmingw324.8.1includec++mingw32bitsc++config.h

e:c++mingwlibgccmingw324.8.1includec++mingw32bitsos_defines.h

e:c++mingwlibgccmingw324.8.1includec++mingw32bitscpu_defines.h

e:c++mingwlibgccmingw324.8.1includec++bitscpp_type_traits.h

e:c++mingwlibgccmingw324.8.1includec++exttype_traits.h

e:c++mingwincludemath.h e:c++mingwinclude_mingw.h

e:c++mingwincludesdkddkver.h

然后查看cmath 头文件中的所有#include 指令(蓝色部分是间接#include指令引起的,为了方便验证我写在一起了)

#include

#include

#include

#include

#include

#include

#include <_mingw.h>

#include

-MD是将输出的结果保存到一个.d文件中

-MM , -MMD

同上,只不过,他不会考虑 #include 指令,而只考虑 #include"head_file" 指令。

作者:代码钢琴家-lulipro

出处:http://www.cnblogs.com/lulipro/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。为了获得更好的阅读体验,请访问原博客地址。限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值