Makefile -GNU和MakeFile关系(二)

跟我一起写Makefile

一、 GNU 到底是什么?(极简版)

GNU = 一套开源、免费、自由的软件生态系统

全称:GNU's Not Unix(递归梗,意思"不是Unix,但像Unix")

你可以把它理解成:
Linux 系统里几乎所有命令行工具,都是 GNU 项目搞出来的。


1. GNU 给了你哪些东西?

你写 GD32、单片机、Linux 天天都在用:

  • GCC :C/C++ 编译器(编译 .c 文件)
  • Make / cmake:构建工程
  • Binutils:ld、objcopy、objdump 等
  • Bash:终端命令行
  • gdb:调试器
  • grep、find、tar、sed、awk 等一堆工具

一句话:
没有 GNU,就没有你现在用的编译环境。


2. GNU 和 Linux 的关系

  • Linux 只是一个内核(kernel)
  • GNU 提供所有外围工具(编译器、shell、命令、库)

合在一起才叫:
GNU/Linux 系统


3. GNU 最出名的:开源协议

  • GPL 协议

    特点:开源传染

    用了 GPL 代码,你的整个项目也必须开源。

  • LGPL 协议

    宽松一点,可以动态链接不开源。

很多单片机库、RTOS、驱动都用这些协议。


4. 超级精简总结

  • GNU = 开源软件项目组织
  • 提供了 GCC、Make、Binutils、Bash 等核心工具
  • 你编译 GD32 代码、用 Linux 命令,都在依赖它

二、关系


1. GNU

是一个开源项目组织 ,它做了一堆免费工具,

包括:GCC、make、binutils、gdb 等。

2. GCC + make + binutils + ......

合在一起叫 GNU 工具链(Toolchain) ,

就是你编译 GD32 用的那套编译器套装。

3. make 和 Makefile

  • Makefile 是"编译说明书"
  • make(GNU make)是执行说明书的工具

你敲 make → 它读 Makefile → 调用 GCC 编译工程。


超级终极总结(背这一句就够)

GNU 做了 GCC 和 make;
Makefile 告诉 make 怎么编译;
make 调用 GCC 把代码变成固件。


画一张极简关系图,一眼看懂整个编译流程。

这张图一眼看懂所有关系,看完再也不会乱👇

一张图看懂:GNU / GCC / make / Makefile / Toolchain

复制代码
【 GNU 】
   ↓
(做了一堆开源工具:GCC、make、binutils、gdb...)
   ↓
【 GNU Arm 工具链 Toolchain 】
   ↓
   ├─ 【 GCC 】:真正负责编译 C 代码 → 生成 .o
   └─ 【 make 】:执行编译的命令工具
         ↑
         │
【 Makefile 】
(给 make 看的"编译说明书":
 编译哪些文件、用什么参数、怎么链接、生成 bin)
         │
         ↓
你敲命令:make
         ↓
【 GD32 固件 .bin / .hex 】

再用 3 句人话总结(背这个)

  1. GNU 是"爸爸",生了 GCC、make 这些工具。
  2. Makefile 是"菜谱",写好怎么编译。
  3. make 按菜谱,指挥 GCC 炒菜,最后烧出单片机固件。

相关推荐
天启HTTP2 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
运维行者_3 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
hz567895 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC5 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
优橙教育5 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
AIgorithmGEEK5 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil2085 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)5 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6255 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
zhengqweasd6 小时前
机房托管服务器怎么选硬盘,机械盘和 SSD 托管场景差异
运维·服务器·github