gcc/g++的工作流程 [ Linux高并发服务器开发 ]

GCC 原名为 GNU C语言编译器(GNU C Compiler)。

GCC(GNU Compiler Collection, GNU编译器套件)是由 GNU 开发的编程语言编译器。(注意: GCC 与 gcc 是不同的,GCC是GNU编译器套件,gcc 是 GNU C语言编译器)。

GNU 编译器套件包括 C、 C++、 Objective-C、 Java、 Ada 和 Go 语言前端,也包括了这些语言的(如 libstdc++, libgcj等),也就是说 gcc 有很多兄弟姐妹,比如:g++ ,GCJ等

gcc 和 g++ 在编译阶段, g++ 会调用 gcc,对于 C++ 代码,两者是等价的。但是因为 gcc 命令不能自动和 C++ 程序使用的库联接,所以通常用 g++ 来完成对C++程序代码的链接。

gcc 与 g++的区别,可以简单的理解为   编译 C 程序使用 gcc ; 编译C++程序用g++。

一、gcc/g++ 工作的流程

windows下的可执行文件是.exe,Linux下的可执行文件是.out

二、gcc/g++ 常用参数选项

三、使用方式如下:

使用下面的 一段 测试代码, 文件名 叫 test.cpp :

#include<iostream>
#define PI 3.1415926
using namespace std;

int main(){
    int sum = PI + 10 ;

    cout<<"Hello"<<sum<<endl;
    return 0;
}

1. gcc/g++ 编译选项    -E

     假设编译 test.cpp,则生成 预处理文件 test.i 的 指令是:

     预处理 会 将 宏定义 替换到 代码中 ; 会删除与代码运行无关的注释。

g++ test.cpp -E -o test.i

2.gcc/g++ 编译选项    -S

    生成 汇编文件 test.s 的指令是:

g++ test.cpp -S -o test.s

(注意: -o 小写 )

3.gcc/g++ 编译选项    -c

     编译汇编的源文件,生成 test.o ,test.o不是可执行文件:

g++ test.s -c -o test.o

4.gcc/g++ 编译选项    -o

    生成可执行文件( .out )

第一种写法:

                        [file1]  -o  [file2]

g++ test.o -o test.out

或者 生成不带文件类型的二进制可执行文件 test:

g++ test.o -o test

还有另外一种写法:

                              -o  [file2]  [file1]  

file2 是生成文件 file1 是 依赖文件。

g++  -o   test  test.cpp

也可以 直接执行生成 汇编文件 ; 直接生成可执行文件,默认生成 a.out

5.gcc/g++ 编译选项    -D

    通过指令,增加预编译宏,作用于程序

gcc  test.c  -o  test   -D   [ 宏 ] 

    例如,下面的程序 ,文件名是 test.c

#include <stdio.h>

int main()
{
    int a = 100;

#ifdef DEBUG
    printf("Hello ,It is my code\n");
#endif

    for(int i =0 ;i<3 ;++i)
    {
        printf("Hello GCC\n");
    }

    return 0;
}

通过指令,增加宏定义,用于执行相关的程序:

6.gcc/g++ 编译选项    -Wall

   生成所有警告信息

gcc test.c  -o  test  -Wall

生成的警告信息,会在终端中显示出来:

7.gcc/g++ 编译选项    -On  (  n为 0~3  )

    编译器 优化代码 的选项

gcc   test.c  -o  test  -O3

优化举例:

        比如下面的声明的变量:

int b,c,d,e;

b = 10;
c = b;
d = c;
e = d;

        优化后相当于:

int b,c,d,e;

b = 10;
c = 10;
d = 10;
e = 10;

隐藏了代码变量之间的关系,防止反汇编等操作。

【Linux高并发服务器开发】  坚持的 第一天  ,加油 !!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值