Linux中的项目管理器“make”有些类似于windows中的Visual C++里的“工程”,它是一种控制编译或者重复编译软件的工具,另外,它还能自动管理软件编译的内容、方式和时机,使程序员能够把精力集中在代码的编写上而不是在源代码的组织上。
|-- Makefile
|-- Readme.txt(记录文件)
|-- board(嵌入式应用程序)
| |-- include
| | |-- common.h
| | |-- device.h
| | |-- log.h
| | |-- msg.h
| | `-- socket.h
| `-- src
| `-- Main
| |-- Makefile
| |-- init.c
| |-- log.c
| |-- main.c
| |-- serial.c
| |-- socket.c
| |-- socket_dev.c
| |-- systeminfo.c
| `-- thread.c
|-- drivers(驱动程序)
|-- kernel(内核源码)
|-- script(脚本文件)
| `-- build.sh
|-- tools(使用到的工具)
| `-- images_tools
| `-- mkyaffs2image
|-- u-boot(bootloader源码)
初步规划好项目的代码结构,编写makefile文件,并使工程能够顺利的编译通过。
- .PHONY:help all uboot kernel app ramdisk system clean drivers
- SRC_PATH=$(shell pwd)
- export SRC_PATH
- help:
- @echo "Usage:"
- @echo "\tmake uboot # Compile UBoot"
- @echo "\tmake kernel # Compile Linux Kernel"
- @echo "\tmake ramdisk # Generate ramdisk.img"
- @echo "\tmake system # Generate system.img"
- @echo "\tmake app # Build Project applicatins"
- @echo "\tmake drivers # Build drivers"
- @echo "\tmake all # make uboot kernel ramdisk system app drivers"
- #$@是Makefile的通配符,代指你前面指定的文件名,
- uboot kernel ramdisk system app drivers:
- @script/build.sh $@
- all:
- @script/build.sh uboot
- @script/build.sh kernel
- @script/build.sh drivers
- @script/build.sh app
- @script/build.sh ramdisk
- @script/build.sh system
- # -C 大写,切换到指定目录再执行 make 过程,makefile 在这个指定目录里面
- clean:
- rm -fr images/*
- rm -fr system/modules/*.ko
- rm -fr system/app/*
- make -C board/src/Main
- make -C u-boot distclean
- make -C drivers clean
- make -C kernel clean
接下来的文章,将详细熟悉board目录中的文件。