电子产业一站式赋能平台

PCB联盟网

搜索
查看: 39|回复: 0
收起左侧

编译工具:gcc,GUN,MinGW,MSVC,make、cmake,Ninja

[复制链接]
匿名  发表于 前天 15:27 |阅读模式
1. 从Hello World说起:程序是怎么变成可执行文件的?让我们从一个最简单的C程序开始:

在Linux上,要让这段代码运行,我们需要用GCC把它变成机器能执行的程序。这个过程分为4步:
  • 预编译(hello.c → hello.i):处理#include等预处理指令
    编译(hello.i → hello.s):生成汇编代码
    汇编(hello.s → hello.o):生成机器码(目标文件)
    链接(hello.o → hello):把目标文件和库合并成可执行文件
    [/ol]用GCC可以一键完成:

    但在Windows的Visual Studio里,你只需要点"Build"按钮——因为VS是IDE,它把编译器、构建工具、调试器都打包好了,隐藏了这些细节。
    2. GNU和GCC:自由软件运动的基石GNU是什么?
  • 全称"GNU's Not Unix"(递归缩写),由Richard Stallman在1983年发起
    目标:创建一个完全自由的操作系统(后来和Linux内核结合成了GNU/Linux)
    精神:"软件应该自由使用、修改和分享"(GPL协议)


    (GNU的logo是非洲牛羚,象征自由奔跑)
    GCC又是什么?
  • GNU Compiler Collection(GNU编译器集合)
    支持C、C++、Fortran等多种语言
    Linux的默认编译器,也是开源世界的编译标准


    3. Windows下的编译选择:MinGW vs MSVCMinGW:GCC的Windows版
  • 全称:Minimalist GNU for Windows
    特点:
  • 把GCC移植到Windows
    生成原生.exe,不依赖额外DLL
    开源免费(Qt、GTK等常用它)


    MSVC:微软的亲儿子
  • Microsoft Visual C++,集成在Visual Studio里
    特点:
  • Windows兼容性最佳
    闭源但免费(社区版)
    和Windows SDK深度绑定



    MinGW (GCC)MSVC出身GNU开源微软官方速度中等优化较好生态跨平台Windows专属4. 为什么需要构建工具?从Make到NinjaMake:最早的"智能批处理"
  • 问题:当项目有a.c、b.c、lib.c...时,手动敲gcc命令太麻烦
    解决:用Makefile定义规则



    CMake:跨平台的Makefile生成器
  • 新问题:不同平台要写不同的Makefile(Windows用nmake,Linux用make...)
    解决:用CMake生成对应平台的构建文件


    生成Makefile:

    Ninja:Google出品,唯快不破
  • 专为超大型项目优化(如Chrome、LLVM)
    比Make快10倍(30000个文件1秒启动编译)
    通常由CMake自动生成build.ninja


    5. 现代C/C++开发工具链推荐场景推荐工具链Linux开发GCC + CMake + NinjaWindows原生开发MSVC + Visual Studio跨平台项目MinGW/Clang + CMake + Ninja超大型项目Clang + CMake + Ninja总结:一张图理清关系

    关键记忆点:
  • GCC是开源编译器,MSVC是微软的
    Make老当益壮,Ninja后来居上
    CMake不是编译器,是"生成构建文件的工具"
    现在你可以自信地和undefined reference错误大战三百回合了!
  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复

    使用道具

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条


    联系客服 关注微信 下载APP 返回顶部 返回列表