程序从源代码到可执行程序

简介: 这篇文章介绍了从源代码到可执行程序的转换过程,包括预处理、编译、汇编和链接四个主要步骤,并提到了解释性语言、脚本语言和超文本语言的不同处理方式。

程序从源代码到可执行程序所要经过的步骤

语言的分类:

  1. 解释性语言
    解释性语言 -通过编译器-> 可执行程序文件(机器语言) 包括(库(动态库,静态库))
    C C++ java C# objective-c等等
  2. 脚本语言
    源代码就是可执行程序文件
    shell javascript python等
  3. 超文本语言
    HTML

Ubuntu共享文件夹的默认位置

cd /mnt/hgfs/

程序从源代码到可执行程序中间经历的步骤

  1. 预处理
    预处理指令的执行 宏的展开(简单的替换)
    gcc -E *.c

    gcc -E test.c
    #将生成的文件内容重定向到test.txt
    gcc -E test.c > test.txt
    #查看文件的内容
    cat test.txt
    
  2. 预编译

  3. 编译
    语法检查 程序优化
    生成目标程序 *.o文件(二进制文件)
    gcc -c *.c

    #可以直接指定输出的文件名
    gcc -c test.c -o a.o
    #输出汇编文件
    gcc -S test.c
    
  4. 链接
    将多个目标程序(包括库)链接成一个可执行程序文件
    gcc *.o -o *.exe

    #直接输出*.exe文件
      gcc test.o -o test.exe
    #默认输出一个a.out文件
    #文件的运行
    ./a.out
    ./test.exe
    

本文如有错误还请大佬们指正

相关文章
源文件与模块生成时的文件不同,是否希望调试器使用它?如何解决
源文件与模块生成时的文件不同,是否希望调试器使用它?如何解决
|
3月前
|
编译器 C# Windows
C#基础:手动编译一个.cs源代码文件并生成.exe可执行文件
通过上述步骤,应该能够高效准确地编译C#源代码并生成相应的可执行文件。此外,这一过程强调了对命令行编译器的理解,这在调试和自动化编译流程中是非常重要的。
236 2
|
C++
【c++】c++ 编译链接成的可执行程序 执行时却表示无法找到某个或几个库
问题描述:c++ 程序已经完成了编译链接,但是在执行时,提醒说某个 库 地址找不到,无法启动进程服务。 使用 ldd 命令 查看执行程序 可以看到 存在 某个库 显示 not find
104 0
|
自然语言处理 Linux C语言
C语言代码到可执行文件的过程
我们写好的代码是不能直接运行的,想要运行需要预编译、编译、汇编、链接四大步骤变成可执行目标文件,本文将简单介绍这四大步骤。
|
NoSQL 编译器 Linux
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(三)
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解
307 0
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(三)
|
自然语言处理 编译器 Linux
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(二)
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解
570 0
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(二)
|
存储 Ubuntu Unix
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(一)
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解
359 0
【三、深入浅出GCC编译器】一个源文件到可执行文件是如何生成的:GCC编译工具链及编译参数详解(一)
|
Ubuntu 编译器 Linux
Linux环境编译多个C程序文件
Linux环境编译多个C程序文件
516 0
|
Linux C语言 C++
Linux环境编译单个C程序文件
Linux环境编译单个C程序文件
253 0
|
NoSQL Linux C++
Linux环境编译动态库
Linux环境编译动态库
127 0