zoukankan      html  css  js  c++  java
  • g++基本用法 分类: arm-linux-Ubuntu 2014-06-18 17:50 414人阅读 评论(0) 收藏

    用法:g++[选项]文件...
    1. g++编译流程:

        

    1. main.cxx  
    2. #include <iostream>   
    3.   
    4. using namespace std;  
    5.   
    6. int main(void)  
    7. {  
    8.         cout<<"Hello World!"<<endl;  
    9.         return 0;  
    10. }  

    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

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    ORACLE CASE WHEN 及 SELECT CASE WHEN的使用方法
    myeclipse6.0下载及注冊码
    tcpdump抓包分析具体解释
    经常使用的android弹出对话框
    我对Laravel ThinkPHP Yii symfony2 CI cakephp 的看法
    MFC原创:三层架构01(人事管理系统)DAL
    struts2操作数据库
    EJB究竟是什么,真的那么神奇吗??
    Android简单发送邮件(可带附件)
    java实现SPFA算法
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706599.html
Copyright © 2011-2022 走看看