gcc编译_gcc编译器 - CSDN
精华内容
参与话题
  • gcc编译步骤

    2019-05-21 10:45:34
    gcc -E hello.c -o hello.i 1. 将所有#define删除,并且展开所有的宏定义 2. 处理所有的条件预编译指令,如#if #ifdef #undef #ifndef #endif #elif 3. 处理#include,将包含的文件插入到此处,这是一个递归的过程 4...
    步骤 命令 说明
    预处理 gcc -E hello.c -o hello.i 1. 将所有#define删除,并且展开所有的宏定义
    2. 处理所有的条件预编译指令,如#if #ifdef #undef #ifndef #endif #elif
    3. 处理#include,将包含的文件插入到此处,这是一个递归的过程
    4. 删除所有注释 // /* */
    5. 添加行号和文件名标识,以便于编译时产生的错误警告能显示行号
    6. 保留#pragma编译器指令
    编译 gcc -S hello.i -o hello.s 将预处理完的.i文件进行一系列的词法分析、语法分析、语义分析及优化后生成响应的汇编代码文件,这是整个程序构建的最核心的部分,也是最复杂的部分
    汇编 gcc -c hello.s -o hello.o或者as hello.s -o hello.o 汇编是将第二步生成的汇编代码编程机器可执行的指令,每一个汇编语句几乎都对应一条机器指令
    链接 链接动态库和静态库
    展开全文
  • gcc编译的3种方式

    千次阅读 2018-09-18 10:15:47
    gcc hello.c 输出一个a.out,然后./a.out来执行该应用程序。 gcc -o hello hello.c 输出hello,然后./hello来执行该应用程序。 方式2: gcc -E -o hello.i hello.c gcc -S -o hello.s hello.i gcc -c -o hello.o ...

     方式1:
    gcc hello.c  输出一个a.out,然后./a.out来执行该应用程序。

    gcc -o hello hello.c  输出hello,然后./hello来执行该应用程序。


    方式2:
    gcc -E -o hello.i hello.c
    gcc -S -o hello.s hello.i
    gcc -c -o hello.o hello.s
    gcc -o hello hello.o

    .o:object file(OBJ文件)
    小结:
    1)输入文件的后缀名和选项共同决定gcc到底执行那些操作。
    2)在编译过程中,除非使用了-E、-S、-c选项(或者编译出错阻止了完整的编译过程)
       否则最后的步骤都是链接。
       

    方式3:
    gcc -c -o hello.o hello.c
    gcc -o hello hello.o

    gcc会对.c文件默认进行预处理操作,-c再来指明了编译、汇编,从而得到.o文件
    再通过gcc -o hello hello.o将.o文件进行链接,得到可执行应用程序

    展开全文
  • Linux系统GCC常用命令和GCC编译过程描述 前言: GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。后来又  扩展能够支持更多编程语言,如Fortran、...

    Linux系统GCC常用命令和GCC编译过程描述

    前言:

    GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。后来又 
    扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改 
    名GNU编译器套件(GNU Compiler Collection)。(百度百科,想了解自己查询)


    一.GCC程序的编译过程大概分四个阶段

    • 预处理(Pre-Processing)
    • 编译(Compiling)
    • 汇编(Assembling)
    • 链接(Linking)

     

     

    二.简单HelloWorld程序的编译过程

    示例:HelloWorld.c

     #include <stdio.h>
     int main()
     {
       printf("Hello World!\n");
       return 0;
     }

    Ctrl+Alt+T  --->打开控制台--->输入vim HelloWorld.c

     

    1. 执行如下命令:$ gcc -o HelloWorld HelloWorld.c


    运行如下 : $ ./HelloWorld
    输出: HelloWorld!


    2. 分步编译如下:
    (1) $ gcc –E HelloWorld.c -o HelloWorld.i

    可以输出HelloWorld.i文件中存放着HelloWorld.c经预处理之后的代码。打开HelloWorld.i文件,看一看,就明白了。后面那条指令,是直接在命令行窗口中输出预处理后的代码.

    gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。在本例中,预处理结果就是将stdio.h 文件中的内容插入到HelloWorld.c中了。


    //预处理结束
    //这时候你看一下HelloWorld.i ,可以看到插进去了很多东西。


    (2) $ gcc –S HelloWorld.i     

    gcc的-S选项,表示在程序编译期间,在生成汇编代码后,停止,-o输出汇编代码文件。

    查看下HelloWorld.s //生成汇编代码后结束



    (3)生成汇编代码文件HelloWorld.s以后,需要gas汇编器负责将其编译为目标文件,如下:

    $ gcc –c HelloWorld.c
    或者:
    $ gcc -c HelloWorld.c –o HelloWorld.o
    或者:
    $ gcc -c HelloWorld.i -o HelloWorld.o

    //编译结束
    //生成 HelloWorld.o文件


    (4) $ gcc HelloWorld.o –o HelloWorld 生成连接,可执行文件(HellWorld重新生成的可执行文件)

    gcc连接器是gas提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。

    附加的目标文件包括静态连接库和动态连接库。

    对于上一小节中生成的HelloWorld.o,将其与C标准输入输出库进行连接,最终生成程序HelloWorld可执行文件

    输入命令:gcc HelloWorld.o –o HelloWorld--->生成如下图:

    3. 多个程序文件的编译

    一般情况一个程序都是有若干个文件源文件组成,所以编译的时候需要形成多个编译单元,使用GCC编译器可以将多个源文件编译成所需要的程序

    比如:源文件有main.c     a.c     b.c  最终生成一个可执行的文件main

    比如:一个工程有main.c a.c b.c生成test的可执行文件。
    编译命令如下:
    $ gcc –c main.c a.c b.c –o main
    或者:
    $ gcc –o main main.c a.c b.c

     

    GCC仍然会按照预处理、编译和链接的过程依次进行

    大概过程相当于:

    gcc -c main.c -o main.o

    gcc -c a.c -o a.o

    gcc -c b.c -o b.o

    最后:

    gcc main.o a.o b.o -o main

     

    展开全文
  • gcc编译c文件的简单操作

    万次阅读 2018-09-24 19:31:57
    将源文件编译成目标文件:gcc - c hello.c,将生成hello.o文件 再将目标文件编译成可执行文件:gcc -o hello hello.o   3、一步到位(可设置生成的文件的名字) gcc hello.c -o hello hello.c是文件名 ...

    比如我有c文件hello.c

    1、最简单的

    gcc hello.c 会在当前路径下生成a.out

     

    2、分步骤

    将源文件编译成目标文件:gcc - c hello.c,将生成hello.o文件

    再将目标文件编译成可执行文件:gcc -o hello hello.o

     

    3、一步到位(可设置生成的文件的名字)

    gcc hello.c -o hello

    hello.c是文件名

    -o 表示输出 

    hello是输出的文件名

    展开全文
  • GCC 编译详解

    千次阅读 2016-03-18 15:53:03
    -E:只进行预处理,不编译 -S:只编译,不汇编 -c:只编译、汇编,不链接 -g:包含调试信息 -I:指定include包含文件的搜索目录 -o:输出成指定文件名 高级选项 -v:详细输出编译过程中所采用的每一个...
  • GCC编译过程

    千次阅读 2019-05-24 17:56:19
    目前 Linux 下最常用的 C 语言编译器是 GCC ( GNU Compiler Collection ),它是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C 、 C++ 和 Object C 等语言编写的程序。 GCC 不仅功能非常强大,结构也异常...
  • GCC编译命令

    千次阅读 2018-08-15 16:33:00
    gcc破坏栈编译命令: gcc -fno-stack-protector -no-pie -o leakmemory leakmemory.c 64位系统下编译32位程序  下载下面两个lib sudo apt-get install build-essential module-assistant sudo apt-get ...
  • GCC 编译编译选项

    千次阅读 2018-06-10 17:18:16
    俗话说:'工欲善其事,必先利其器',一直在工作中使用GNU C编译器(以下简称GCC),这里对GCC的一些警告选项细致的分析,并列举几个简单的例子[注1]供分析参考。 1、-Wall集合警告选项我们平时可能大多数情况只使用-...
  • GCC编译器简明教程(Linux下C语言开发环境的搭建)

    万次阅读 多人点赞 2018-09-13 21:49:59
    GCC编译器简明教程(Linux下C语言开发环境的搭建) 市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核、桌面环境(例如GNOME、KDE、Unity等)和各种常用的必备工具(例如Shell、GCC、VIM、Firefox...
  • gcc编译基本用法

    万次阅读 2016-05-03 08:11:34
    gcc的基本用法 命令格式:gcc [选项] [文件名] 编译的四个阶段: -E:仅执行编译预处理; -c:仅执行编译操作,不进行连接操作; -S:将C代码转换为汇编代码; -o:指定生成的输出文件。 –c...
  • gcc程序的编译过程和链接原理

    万次阅读 多人点赞 2017-10-24 17:02:07
    一、C/C++文件的编译过程:先来看一下gcc的使用方法和常用选项 提示:gcc --help Ⅰ、使用方法:gcc [选项] 文件名Ⅱ、常用选项: 选项 含义 -v 查看gcc编译器的版本,显示gcc执行时的详细过程 -o ...
  • gcc编译选项总结

    万次阅读 2014-03-17 15:20:14
    编译选项 #------------------------------...gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s
  • gcc编译c++文件

    千次阅读 2019-02-15 15:47:30
    gcc编译c语言的,默认情况下,如果直接编译c++程序,会报错: [root@server demo2]# ls hello.cpp [root@server demo2]# cat hello.cpp  #include &lt;iostream&gt; using namespace std; int main(){ ...
  • GCC编译常用命令

    千次阅读 2018-05-05 23:45:02
    GCC 编译命令 ----------------加入新公司后,基本上是一键式打包脚本,对于GCC基本上快忘了,重新拾起。GCC命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习...
  • gcc编译原理

    千次阅读 2013-01-28 07:11:06
    使用gcc编译程序时,编译过程可被细分为四个阶段: (1)预处理 (2)编译 (3)汇编 (4)链接 例如hello.c程序 hello.c: #include int main(void) { printf (Hello world!\n); return 0; }   1、...
  • Linux下GCC编译C语言

    万次阅读 多人点赞 2018-06-12 20:49:50
    Linux下GCC编译C语言Linux下GCC编译C语言 1.创建一个.C文件 # vi/vim name.c 2.编译name.c文件,生成可执行文件 # gcc name.c 3.执行文件,在默认情况下产生的可执行程序名为a.out # ./a.out 4.通常可以...
  • GCC 编译命令

    万次阅读 2018-12-25 09:58:00
    GCC 编译器在编译一个C语言程序时需要经过以下 4 步: 将C语言源程序预处理,生成.i文件。 预处理后的.i文件编译成为汇编语言,生成.s文件。 将汇编语言文件经过汇编,生成目标文件.o文件。 将各个模块的.o文件...
  • GCC编译过程,了解编译原理

    千次阅读 2018-12-09 20:00:16
    1、GCC编译过程分解 以HelloWorld程序为例 2、预编译 规则: 命令:gcc -E XXX.c -o XXX.i   3、编译 词法分析、语法分析、语义分析及优化 ---------------&gt;&gt; 汇编代码文件 命令:...
  • 一直好奇程序的编译过程到底做了哪些工作,后来学会在Ubuntu上使用gcc编译程序,知道了生成可执行文件需要分为预编译、编译、汇编和链接4个步骤,逐渐了解了其中的细节,但是过一段时间之后总是记不太清楚了,所以...
  • GCC编译选项详解

    千次阅读 2019-08-30 15:18:35
    1、gcc包含的c/c++编译器gcc,cc,...一般c程序就用gcc编译,c++程序就用g++编译  2、gcc的基本用法 gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指...
1 2 3 4 5 ... 20
收藏数 361,365
精华内容 144,546
关键字:

gcc编译