Makefile -GNU和MakeFile关系(二)
跟我一起写Makefile一、 GNU 到底是什么极简版GNU 一套开源、免费、自由的软件生态系统全称GNU’s Not Unix递归梗意思“不是Unix但像Unix”你可以把它理解成Linux 系统里几乎所有命令行工具都是 GNU 项目搞出来的。1. GNU 给了你哪些东西你写 GD32、单片机、Linux 天天都在用GCCC/C 编译器编译.c文件Make / cmake构建工程Binutilsld、objcopy、objdump 等Bash终端命令行gdb调试器grep、find、tar、sed、awk等一堆工具一句话没有 GNU就没有你现在用的编译环境。2. GNU 和 Linux 的关系Linux只是一个内核kernelGNU提供所有外围工具编译器、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 和 MakefileMakefile 是“编译说明书”makeGNU make是执行说明书的工具你敲make→ 它读 Makefile → 调用 GCC 编译工程。超级终极总结背这一句就够GNU 做了 GCC 和 makeMakefile 告诉 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 句人话总结背这个GNU是“爸爸”生了GCC、make这些工具。Makefile是“菜谱”写好怎么编译。make按菜谱指挥GCC炒菜最后烧出单片机固件。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2506894.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!