前言
但凡接触过Makefile的同学,我想陈皓的《跟我一起写Makefile》必不陌生,其概述中的一句话我印象比较深,“会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力”。这两年以来,我一直在做产品支撑方面(系统级项目)的开发和维护,无论是底层驱动(Boot/BSP/Kernel)还是上层应用,编译方面的事情也参与了不少,认识上也是大有长进。对于我所接触的项目而言,整个系统的编译甚至已经上升到一个工程的维度,要兼顾易使用、易维护、可扩展,尤其注重编译效率,已经远不止是编译出一两个简单进程文件而已了。年前,因为开发调试过几个系统子应用,稍有收获,于是想着可以尝试从编译子应用的角度去理解整个系统项目的编译工程框架,是以从头开始做一番整理。
Demo应用
出于示例需要,该Demo只是对我的系统子应用的简单抽象,不具有实际意义。
目录结构:
源码内容:
./public/main.c ./public/public.h
1 #include "public.h" | 1 #ifndef __PUBLIC_H__
2 | 2 #define __PUBLIC_H__
3 int main() | 3
4 { | 4
5 printf("hello, fun.\n"); | 5 #include "stdio.h"
6 | 6 #include "lib.h"
7 lib_func();

本文介绍了从零开始构建编译框架的过程,重点关注如何编写第一个Makefile及其遇到的问题,如交叉编译工具链的设置挑战、.o目标文件与源文件的混杂以及随着源码结构变化需要频繁调整Makefile的困扰。
&spm=1001.2101.3001.5002&articleId=54347974&d=1&t=3&u=ba0a02b3567c4e7693600278cf503036)

被折叠的 条评论
为什么被折叠?



