如何将C语言源代码文件通过编译、链接等步骤最终转化为可执行文件?

2026-04-12 07:541阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1182个文字,预计阅读时间需要5分钟。

如何将C语言源代码文件通过编译、链接等步骤最终转化为可执行文件?

目录+源文件+从文本到可执行文件+历经的过程+从.c文件到.exe文件+源程序如何到可执行程序+源文件+从文本到可执行文件+历经的过程+从.c文件到.exe文件+gcc+hello.c+-o+hello.exe+源文件+(-E)+预

目录
  • 源文件从文本到可执行文件经历的过程
    • 从 .c文件到 .exe文件
  • 源程序如何到可执行程序

    源文件从文本到可执行文件经历的过程

    从 .c文件到 .exe文件

    gcc hello.c -o hello.exe

    源文件( -E) 预处理文件 (-S) 汇编文件 (-c) 目标文件 ( 无)可执行文件

    hello.c--预处理--hello.i--编译--hello.s---汇编--hello.o--链接--hello.exe

    预处理

    gcc -E hello.c -o hello.i

    1.头文件展开 —不检查语法错误,可以展开任意文件

    2.宏定义—将宏名替换为宏值,不检查语法错误

    3.替换注释—变成空行

    4.展开条件编译—根据条件来展开指令

    编译

    gcc -S hello.i -o hello.s

    1.将c程序翻译为汇编指令

    2.逐行检查语法错误–整个编译4步中最耗时间的过程

    汇编

    gcc -c hello.s -o hello.o

    1.将汇编指令翻译成对应的二进制编码

    链接

    gcc hello.o -o hello.exe

    1.数据段合并

    2.数据地址回填

    3.库引入

    寄存器、缓存、内存三者关系

    cpu计算时,先预先把要用的数据从硬盘督导内存,然后再把即将要用的数据读到寄存器中。缓存能够提高数据的读取速度。

    集成开发环境 IDE

    用于提供程序开发的应用程序,一般包括编辑器、编译器、调试器和用户界面工具。

    源程序如何到可执行程序

    源程序(源代码)是指按照一定的程序设计语言规范编写的未经过编译的文本文件,是具有可读性的计算机语言指令。可以比作自己手写的程序代码。

    如何将C语言源代码文件通过编译、链接等步骤最终转化为可执行文件?

    可执行程序(Executable Program,EXE file)是可以在操作系统存储空间中浮动定位的二进制可执行程序。一般软件安装后会生成可执行文件,可以直接加载到内存中,并又操作系统加载并执行。

    以 C 语言为例,自己编写的源代码文件扩展名为 c,这个 c 文件就是源文件。

    从源文件到可执行文件一般需要经过几个步骤:预处理->编译->汇编->链接这四个过程。

    • 预处理:预处理相当于根据预处理命令将源代码转换为新的 c 程序,不过通常以 i 为扩展名。
    • 编译:将得到的 i 文件翻译成汇编代码,通常以 s 为扩展名。
    • 汇编:将汇编文件翻译为机器指令,并打包成可重定位目标程序的 o 文件。
    • 链接:将引用的其它 o 文件加到汇编后的 o 文件中,处理后得到最终的可执行文件。

    这里首先在 linux 操作系统中编写源代码,并命名为 hello.c,内容如下:

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

    一个很简单的源代码,但是这样的源代码如果不是在集成开发环境(Integrated Development Environment,IDE)中是不能够直接点击执行的,需要经过一系列的操作,具体为:

    # 预处理 gcc -E hello.c -o hello.i # 编译 gcc -S hello.i -o hello.s # 汇编 gcc -c hello.s -o hello.o # 链接 gcc hello.o -o hello

    经过以下操作后,就能够发现在 hello.c 文件同级目录中出现了文件 hello.i,hello.s,hello.o,hello。可知文件 hello 即为可执行程序,我们在终端中输入下方的指令,就能够看到最后的输出结果。

    ./hello

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

    本文共计1182个文字,预计阅读时间需要5分钟。

    如何将C语言源代码文件通过编译、链接等步骤最终转化为可执行文件?

    目录+源文件+从文本到可执行文件+历经的过程+从.c文件到.exe文件+源程序如何到可执行程序+源文件+从文本到可执行文件+历经的过程+从.c文件到.exe文件+gcc+hello.c+-o+hello.exe+源文件+(-E)+预

    目录
    • 源文件从文本到可执行文件经历的过程
      • 从 .c文件到 .exe文件
    • 源程序如何到可执行程序

      源文件从文本到可执行文件经历的过程

      从 .c文件到 .exe文件

      gcc hello.c -o hello.exe

      源文件( -E) 预处理文件 (-S) 汇编文件 (-c) 目标文件 ( 无)可执行文件

      hello.c--预处理--hello.i--编译--hello.s---汇编--hello.o--链接--hello.exe

      预处理

      gcc -E hello.c -o hello.i

      1.头文件展开 —不检查语法错误,可以展开任意文件

      2.宏定义—将宏名替换为宏值,不检查语法错误

      3.替换注释—变成空行

      4.展开条件编译—根据条件来展开指令

      编译

      gcc -S hello.i -o hello.s

      1.将c程序翻译为汇编指令

      2.逐行检查语法错误–整个编译4步中最耗时间的过程

      汇编

      gcc -c hello.s -o hello.o

      1.将汇编指令翻译成对应的二进制编码

      链接

      gcc hello.o -o hello.exe

      1.数据段合并

      2.数据地址回填

      3.库引入

      寄存器、缓存、内存三者关系

      cpu计算时,先预先把要用的数据从硬盘督导内存,然后再把即将要用的数据读到寄存器中。缓存能够提高数据的读取速度。

      集成开发环境 IDE

      用于提供程序开发的应用程序,一般包括编辑器、编译器、调试器和用户界面工具。

      源程序如何到可执行程序

      源程序(源代码)是指按照一定的程序设计语言规范编写的未经过编译的文本文件,是具有可读性的计算机语言指令。可以比作自己手写的程序代码。

      如何将C语言源代码文件通过编译、链接等步骤最终转化为可执行文件?

      可执行程序(Executable Program,EXE file)是可以在操作系统存储空间中浮动定位的二进制可执行程序。一般软件安装后会生成可执行文件,可以直接加载到内存中,并又操作系统加载并执行。

      以 C 语言为例,自己编写的源代码文件扩展名为 c,这个 c 文件就是源文件。

      从源文件到可执行文件一般需要经过几个步骤:预处理->编译->汇编->链接这四个过程。

      • 预处理:预处理相当于根据预处理命令将源代码转换为新的 c 程序,不过通常以 i 为扩展名。
      • 编译:将得到的 i 文件翻译成汇编代码,通常以 s 为扩展名。
      • 汇编:将汇编文件翻译为机器指令,并打包成可重定位目标程序的 o 文件。
      • 链接:将引用的其它 o 文件加到汇编后的 o 文件中,处理后得到最终的可执行文件。

      这里首先在 linux 操作系统中编写源代码,并命名为 hello.c,内容如下:

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

      一个很简单的源代码,但是这样的源代码如果不是在集成开发环境(Integrated Development Environment,IDE)中是不能够直接点击执行的,需要经过一系列的操作,具体为:

      # 预处理 gcc -E hello.c -o hello.i # 编译 gcc -S hello.i -o hello.s # 汇编 gcc -c hello.s -o hello.o # 链接 gcc hello.o -o hello

      经过以下操作后,就能够发现在 hello.c 文件同级目录中出现了文件 hello.i,hello.s,hello.o,hello。可知文件 hello 即为可执行程序,我们在终端中输入下方的指令,就能够看到最后的输出结果。

      ./hello

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。