gcc的编译过程和gcc与g++的区别

简介: gcc的编译过程和gcc与g++的区别

每个喜欢C++程序员的必备知识储备

一、GNU编译

GCC的编译过程(4个过程5个文件)

编译工具链

 gcc的编译选项

        -E         将源文件预处理为预处理后的源文件
        -S         将预处理后的源文件编译成汇编文件
        -c         将汇编文件汇编成二进制文件
        -o         将二进制文件通过链接形成可执行文件
        -I(大i         指定include包含文件的搜索路径
        -g         生成调试信息,该程序可以被调试器调试
        -D         在程序编译的时候指定宏(Debug/Relese版)
        -w         不生成任何警告信息
        -wall         生成所有警告信息
        -l(小L)         在程序编译的时候指定使用的库
        -L         在程序编译的时候,搜索库的路径
        -fPIC         生成与位置无关的代码
   -shared         生成共享目标文件,通常用在建立共享库时
        -std         指定c方言,即c的版本
        -On         优化级别(0-3依次增高)

gcc与g++的区别

       1.gcc和g++都是GNU(组织)的一个编译器

       2.后缀为.c的文件,gcc把它当作是c程序,g++当作是c++文件,c++的语法更加严格

       3.后缀为.cpp的文件,两者都认为是c++程序

       4.编译阶段,g++会调用gcc,对于c++代码,二者是等价的,但是因为gcc不会自动和c++程序使用库联接,所以通常用g++来完成链接,为了统一,编译/链接都使用g++

       5.gcc不会定义_cplusplus宏(误解),实际上买这个宏只是标志着编译器将会把代码按c还是c++语法来解释,所以,如果后缀.c的编译器用gcc编译器,那么_cplusplus就是未定义

       6.编译可以用gcc/g++,而链接可以用g++/gcc -lstdc++

       7.gcc不能自动和c++程序使用的库连接,所以通常使用g++

相关文章
|
3月前
|
前端开发 C语言
gcc动态库升级
gcc动态库升级
|
1月前
|
编译器 Linux C语言
gcc的编译过程
GCC(GNU Compiler Collection)的编译过程主要包括四个阶段:预处理、编译、汇编和链接。预处理展开宏定义,编译将代码转换为汇编语言,汇编生成目标文件,链接将目标文件与库文件合并成可执行文件。
64 11
|
3月前
|
编译器 开发工具 C语言
Gcc 链接文件
Gcc 链接文件
36 4
|
3月前
|
编译器 C语言 C++
MinGW安装gcc
MinGW安装gcc
91 0
|
5月前
|
自然语言处理 编译器 Go
GCC:GNU编译器
GCC:GNU编译器
|
6月前
|
编译器 Linux 开发工具
|
6月前
|
NoSQL 编译器 开发工具
006.gcc编译器
gcc是什么?
87 0
006.gcc编译器
|
6月前
|
存储 NoSQL 算法
从一个crash问题展开,探索gcc编译优化细节
问题分析的过程也正是技术成长之路,本文以一个gcc编译优化引发的crash为切入点,逐步展开对编译器优化细节的探索之路,在分析过程中打开了新世界的大门……
|
5月前
|
Java 编译器 Linux
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
165 0
|
5月前
|
C语言
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令