g++基本用法

原创 2013年12月02日 15:07:10

      用法:g++[选项]文件...

  1. g++编译流程:

    

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)。


2g++关键参数介绍

上文在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:致命错误:iostreamNosuch 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 \

... ...



Linux 环境下使用g++编译C++

单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: /* helloworld.cpp */ #include int main(in...
  • hnyzwtf
  • hnyzwtf
  • 2015年03月27日 12:06
  • 34207

分析g++的编译与链接初步

head.cpp #include using namespace std; void hello(){ cout
  • mtawaken
  • mtawaken
  • 2012年03月31日 16:43
  • 4170

2B

(二)广东省2011年普通高校招生录取第二批本科B类普通类(理科)院校征集志愿招生计划表 院校代码 院校名称 专业代码 专业名称 专业方向 计划数 学...
  • mopname
  • mopname
  • 2011年08月02日 22:38
  • 13806

程序员面试宝典 %2B 剑指Offer %2B 算法100题系列 %2B 15个经典算法打包下载

  • 2015年03月15日 20:51
  • 40.74MB
  • 下载

g++/gcc选项

添加运行时共享库目录运行使用共享库的程序需要加载共享库(不同于G++ 编译时指定的链接库),添加共享库的步骤:修改文件 /etc/ld.so.conf 添加共享库目录运行 ldconfig 同步更新一...
  • liuzhoulong
  • liuzhoulong
  • 2014年03月25日 11:21
  • 2659

g++编译命令选项

gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。 g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c。这时候命令换做gcc即可。其实是无关紧要的。 其实编译器是根...
  • woshinia
  • woshinia
  • 2013年09月04日 15:14
  • 58588

编译MongoDB C++ driver时启用-fPIC

-fPIC 在用g++编译C++程序时很有用。这里介绍了它的用处:http://explainshell.com/explain?cmd=g%2B%2B+-fpic简短来说,当编译so动态库的时候,总...
  • sheismylife
  • sheismylife
  • 2013年12月09日 16:28
  • 2798

斐讯K2 刷breed 再刷 固件 。

1   先刷入(降低或升级) K2_V22.6.506.28  版本 ,如果不行 先刷 K2_V22.6.507.43,再降。 2.   解压 RoutAckProV1B2.rar  打开 tele...
  • u013762848
  • u013762848
  • 2018年01月08日 09:45
  • 310

linux下gcc/g++的命令和使用详解

[介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文...
  • langb2014
  • langb2014
  • 2016年01月03日 21:05
  • 9810

[C/C++]Windows中配置g++编译环境最简单方法

 [C/C++]Windows中配置g++编译环境最简单方法一般而言,windows下配置g++环境有两种思路,cygnus和Mingw,这里是采用的cygnus的g++编译器,原打算翻译一下http...
  • leonsc
  • leonsc
  • 2010年08月31日 16:45
  • 15762
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:g++基本用法
举报原因:
原因补充:

(最多只允许输入30个字)