urlname
type
Post
password
SyncToConfluence
category
学习笔记
date
Apr 25, 2024
slug
01HWB3273Y8WSJ2NGXK8XDGS7S
icon
Button
catalog
summary
tags
C++
cover
Status
BusyTime
Status 1
status
Published
😀
主要记录C++基础入门关于编译器常识的内容,用于理解、记录相关概念。

🔑 关键词

  • GCC:原本指GNU C Compiler,后面扩展到GNU Compiler Collection
    • C语言编译器,编译C++要借助G++
  • Clang:
    • C、C++、Objective-C、Objective-C++编译器
    • LLVM的前端编译器
  • LLVM:Low Level Virtual Machine
    • 与Clang配套,为Clang的后端编译器
  • G++:
    • C++编译器
    • 是GCC的一个前端编译器
    • 可以使用GCC后端进行代码的生成和优化
  • MSVC:
    • Microsoft提供的编译器,集成在Visual Studio中,主要用于Windows平台。
  • 前端编译器:
    • 负责语法分析、词法分析、类型检查等,确保代码符合语言规范
    • 将源代码转换成中间表示(Intermediate Representation, IR)
  • 后端编译器:
    • 负责代码优化以及IR到目标代码的转换
    • 专注于生成针对特定处理器(如x86、ARM等)优化的代码

📑 编译器作用

  • 翻译:
    • CPU无法直接理解和执行高级语言代码,计算机的世界只有01。
    • 编译器可以将高级编程语言编写的源代码转换成计算机能直接理解和执行的机器语言代码。
  • 语法检查
    • 编译器能检查代码的语法是否符合C++标准,包括词法、语法和一些语义检查。
  • 代码优化
    • 编译器还负责优化代码,改善程序的执行速度和效率,比如简化计算表达式、优化循环处理、消除不必要的代码等。

🧑‍✈️ C++程序的运行过程

💡
.cpp源代码文件 → 编译 → 链接 → 执行
  • 编写源代码
    • 使用C++语言编写源代码,并保存在源文件中。(.cpp文件)
  • 编译
    • .cpp 文件转换为 .o或.obj 文件。
    • 编译器将源代码转换为目标代码(通常是汇编语言或机器语言)。
    • 此时尚未解析关于程序中使用的各种函数和变量的位置和库的引用信息。
  • 链接
    • 将所有目标文件(从一个或多个源文件生成)和必要的库文件(.dll.lib.so)链接在一起形成可执行文件。
    • 解决程序中引用的各种函数和变量的地址。
  • 执行
    • 加载可执行文件到内存中,CPU按照程序指令执行操作。

📝 工具

  • 在线查看不同编译器对C++代码编译后的代码:
  • C++在线编译器:
Relate Posts
FreeSwitch资料FreeSwitch基础
Loading...