g++基本用法
用法:g++[选项]文件...
g++编译流程:
- main.cxx
- #include <iostream>
- using namespace std;
- int main(void)
- {
- cout<<"Hello World!"<<endl;
- return 0;
- }
main.cxx
#include <iostream>
using namespace std;
int main(void)
{
cout<<"Hello World!"<<endl;
return 0;
}
① g++ -E仅作预处理,不进行编译、汇编和链接
如果你想查看某一个文件的预处理过程,可以
Administrator@72cec870236147e/home/liujl/mytest
$g++ -E main.cxx
这样会直接在terminal中显示预处理过程,如果main.cxx中包含include,例如#include<iostream>,只能看到部分预处理结果;这个只显示预处理,不生成文件;如果你想查看详细的预处理,可以重定向到一个文件中,如:
Administrator@72cec870236147e/home/liujl/mytest
$g++ -E main.cxx -o main.i
这样你可以查看main.i中显示的内容,里面会有类似:
#1 "/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/bits/stringfwd.h"1 3
可以参考官方预处理输出文档:
http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html
或者:
http://stackoverflow.com/questions/15679756/g-e-option-output
②g++ -s
编译到汇编语言,不进行汇编和链接,即只激活预处理和编译,生成汇编语言
Administrator@72cec870236147e/home/liujl/mytest
$g++ -s main.i -o main.s
③g++ -c
编译、汇编到目标代码,不进行链接,即生成目标文件(.o)
Administrator@72cec870236147e/home/liujl/mytest
$g++ -c main.s -o main.o
会生成一个main.o的目标文件
④g++ -o
生成链接文件
Administrator@72cec870236147e/home/liujl/mytest
$g++ main.o printf1.o printf2.o -o main
(注意,如果各个文件有依赖关系,在生成链接文件之前步骤每个文件单独操作都没有问题,但是在链接的时候会考虑依赖关系,所以上面语句把main中的依赖添加上面了)
⑤./main
执行
这是最后一步了,执行-o后面的文件,如果没有-o,系统会默认生成一个a.out文件(执行./a.out)。
2、g++关键参数介绍
上文在g++编译过程中已经介绍过-E、-S、-c、-o,再简单介绍-x和-M
①-x <语言>
指定其后输入文件的语言
允许的语言包括:cc++
assembler none
‘none’意味着恢复默认行为,即根据文件的扩展名猜测源文件的语言
Administrator@72cec870236147e/home/liujl/mytest
$g++ -x
c main.cxx
main.cxx:1:20:致命错误:iostream:Nosuch
file or directory
编译中断。
用c语言编译main.cxx,由于main.cxx中有#include<iostream>,是c语言中没有的,所以会报错误
Administrator@72cec870236147e/home/liujl/mytest
$g++ -x
c++ main.cxx,编译就没问题。
②g++ -M main.cxx
生成文件关联信息。包含目标文件所依赖的所有源代码。
Administrator@72cec870236147e/home/liujl/mytest
$g++ -M main.cxx
main1.o:main1.cxx /usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/iostream \
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/i686-pc-cygwin/bits/c++config.h\
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/i686-pc-cygwin/bits/os_defines.h\
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/i686-pc-cygwin/bits/cpu_defines.h\
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/ostream \
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/ios \
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/iosfwd \
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/bits/stringfwd.h \
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/bits/postypes.h \
/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/cwchar \
g++基本用法的更多相关文章
- .replace(/-/g,"/")的用法
/-/g正则表达式 g 代表 global 全部替换 var str1 ="2012-08-12 23:13"; str1 = str1.replace(/-/g,& ...
- js正则标志/g /i /m的用法,以及实例
js正则标志/g /i /m的用法,以及实例 正则的思想都是一样的,但是具体的写法会有所不同,在这里提到的/g,/i,/m在其他的地方也许就不能用了. 一,js正则标志/g,/i,/m说明 1,/ ...
- 关于正则表达式中参数/g /m的详细分析和例子详解
总结1:参数/g的用法 表达式加上参数g之后,表明可以进行全局匹配,注意这里"可以"的含义.我们详细叙述: 1)对于表达式对象的exec方法,不加入g,则只返回第一个匹配,无论执行 ...
- 正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?
解答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容易犯糊涂的地方再系统总结 ...
- 正则表达式中/g的含义
关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?” 为了解答“正则表达式(/[^0-9]/g,'')中的" ...
- ES6.0 Generator 三种用法
// Generator start ------- thunk 用法 const Thunk = function(fn) { return function (...args) { return ...
- 正则表达式中模式修正符作用详解(i、g、m、s、x、e)
下面的转:http://www.cnblogs.com/shunyao8210/archive/2008/11/13/1332591.html 总结1:附件参数g的用法 表达式加上参数g之后,表明可以 ...
- Linux 编译工具 gcc/g++、Make/Makefile、CMake/CMakeLists.txt、qmake
前言 编译器的主要工作流程: 源码(Source Code)>> 预处理器(Preprocessor)>> 编译器(Compiler)>> 汇编程序(Assembl ...
- 【C/C++】Linux的gcc和g++的区别
Windows中我们常用vs来编译编写好的C和C++代码:vs把编辑器,编译器和调试器等工具都集成在这一款工具中,在Linux下我们能用什么工具来编译所编写好的代码呢,其实Linux下这样的工具有很多 ...
随机推荐
- Django跨域请求之JSONP和CORS
现在来新建一个Django项目server01,url配置为 url(r'^getData.html$',views.get_data) 其对应的视图函数为get_data: from django. ...
- CentOS 6.3 SSH连接时很慢的解决方法
SSH的配置文件,默认开启了DNS反向解析,这使得处于同一个局域网下的终端,在SSH到服务器的时候异常缓慢,如果从是外网SSH到服务器的话,速度则是正常的.我们只需要关闭DNS反向解析即可. 修改/e ...
- 使用zii.widgets.CDetailView显示内容
Yii里的CDetailView可以用来显示详细内容,有时会遇到显示的html内容是被转义过的,也就是原本是要显示html样式的,结果显示出来的内容却是把html当作普通文本了. 先看一个CDetai ...
- java导入项目有红色叹号
原因:缺少jar包 解决: 选中项目 -> 右键 -> Build Path -> Configer Builder Path -> 删除掉有错的J ...
- 使用mongoose和bcrypt实现用户密码加密
前面的话 最近在做的个人项目中,需要对密码进行加密保存,对该操作的详细步骤记录如下 介绍 关于mongoose已经写过博客就不再赘述,下面主要介绍bcrypt bcrypt是一个由两个外国人根据Blo ...
- JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是什么? PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatemen ...
- Cannot read property 'component' of undefined 即vue-router 0.x转化为2.x
原文链接:http://blog.csdn.net/m0_37754657/article/details/71269988 由于vue版本为1.0,没有一些vue-router指令:因而需要vue- ...
- AWS-SS配置过程
为满足家长要求,以下只录步骤: 远端: 1. 注册并启动一个AWS实例.这一步网上N多教程,搜 AWS EC2 等均可. 2. 远程安装SS,并写配置文件.依然网搜, AWS S(hadow)S(oc ...
- vue调试工具之 vue-devtools的安装
这里介绍一下vue-devtools的安装方法之一: chrome浏览器的应用商店不能直接访问(需要跨域),所以直接应用商店安装的方法就行不通了. 1.到github主页去下载安装: git clon ...
- jq实现碰到边缘反弹的动画
先上效果图: 录出来有点卡顿的赶脚,实际上还是挺顺畅的. 1.HTML: <div class="box"></div> 2.CSS: body{ back ...