zoukankan      html  css  js  c++  java
  • gcc和g++的用法

    gcc基本用法:

      gcc main.c -o hello

    g++基本用法:

    1、g++编译流程:

      预处理-->编译-->汇编-->链接

    # main.cpp
    #include <iostream> using namespace std; int main(void) { cout<<"Hello World!"<<endl; return 0; }

    预处理:

      g++ -E 仅作预处理,不进行编译、汇编和链接

      比如查看某一个文件的预处理过程,命令如下:

        $g++ -E main.cpp

      上面命令直接在terminal中显示预处理过程,如果main.cpp中包含include,例如#include<iostream>,只能看到部分预处理结果;这个只显示预处理,不生成文件;如果你想查看详细的预处理,可以重定向到一个文件中,命令如下:

        $g++ -E main.cpp -o main.i

    编译:

      g++ -s 编译到汇编语言,不进行汇编和链接,即只激活预处理和编译,生成汇编语言

      $g++ -s main.i -o main.s

    汇编:

      g++ -c 编译、汇编到目标代码,不进行链接,即生成目标文件(.o

      $g++ -c main.s -o main.o

    链接:

      g++ -o 

      g++ main.o -o main

      (注意,如果各个文件有依赖关系,在生成链接文件之前步骤每个文件单独操作都没有问题,但是在链接的时候会考虑依赖关系,所以需要在main.o后面添加依赖文件)

    执行:

      ./main 执行

      最后一步,执行-o后面的文件,如果没有-o,系统会默认生成一个a.out文件(执行./a.out

    一步执行:

      g++ main.cpp -o main

    2g++关键参数介绍

    上文在g++编译过程中已经介绍过-E-S-c-o,再简单介绍-x-M

      -x <语言> 指定其后输入文件的语言

      允许的语言包括:c c++ assembler none

     

      ‘none’意味着恢复默认行为,即根据文件的扩展名猜测源文件的语言

      实例如下:

        $g++ -x c main.cpp  # 编译出错,提示:main.cpp:1:19: fatal error: iostream: 没有那个文件或目录

        $g++ -x c++ main.cpp  # 编译成功    

     

      g++ -M main.cpp 生成文件关联信息。包含目标文件所依赖的所有源代码

  • 相关阅读:
    【Leetcode】【Medium】Group Anagrams
    【Leetcode】【Hard】Merge k Sorted Lists
    面向.Net程序员的Sql版本管理
    分享改进 完全定制自己的代码生成器
    面向.Net程序员的后端性能优化实战
    一个winform带你玩转rabbitMQ
    vs多项目模板及add-in开发
    面向.Net程序员的前端优化
    面向.Net程序员的dump分析
    【网络安全】(一) 0成本添加访问级监控
  • 原文地址:https://www.cnblogs.com/hypnus-ly/p/8573259.html
Copyright © 2011-2022 走看看