zoukankan      html  css  js  c++  java
  • 程序编译流程

    可以讲编程语言划分为两大类:
    • 编译型语言
      • 运行前,先由编译器将高级语言的代码编译成对应机器的cpu汇编指令,然后再有汇编器汇编为目标机器码,生成可执行文件,然后运行最终生成的可执行文件
    • 解释型语言
      • 运行时,由翻译器将高级语言代码反应成中间代码,并由解释器将该中间代码解释成机器码并执行,相当于编译和执行二合一
     
    编译一个C程序分为四个阶段:
    1、预处理阶段
    2、生成汇编代码阶段
    3、汇编阶段
    4、链接阶段
     
    ps:也就是说,gcc会生成汇编的.o文件,然后通过链接,生成.out文件
     
    编译的主要步骤有:词法分析->语法分析->语义分析及相关的优化->中间代码生成->目标代码生成(汇编文件.s)
     
    关于gcc、g++和gdb
    linux中,使用gcc来编译c程序,用g++来编译c++程序,用gdb来调试程序
    安装g++:
    yum install gcc-c++
    安装gcc:
    yum install gcc
    安装gdb:
    yum install gdb
     
    为什么编译成汇编代码?
    一般的编译器,是先将高级语言转换成汇编代码(中间代码),然后在汇编的基础上优化成OBJ目标代码,最后link成可执行文件
     
    • C#是一种二次编译语言,首先是通过编译器将C#编译成IL文件,然后通过CLR将IL文件编译成机器码文件,这种机器文件也只能适用于特定的CPU才可以运行。
    • java号称一次编译,到处运行,他也是先通过编译器将java文件编译成javac文件,然后需要运行的时候再通过虚拟机jvm将中间代码翻译成特定目标平台的机器码文件,不同的cpu的机器只需要安装对应的虚拟机便可以执行同一份java代码,所以java是一种先编译后解释的语言。
     
     
    参考资料:
    https://blog.csdn.net/sholck222/article/details/72724377/(编译和解释的区别是什么?
  • 相关阅读:
    javascript概述
    linux系统编程(一)概述
    软件工程
    SQL
    数据结构和算法(一)概述
    cpp标准库
    c语言标准库
    c/c++概述
    编程语言的思考
    GCD学习
  • 原文地址:https://www.cnblogs.com/djzny/p/10113875.html
Copyright © 2011-2022 走看看