SDK工程目录介绍:
工程目录下有 buildroot、 app、 kernel、 u-boot、 device、 external、prebuilts、rockimg、tools 等目录。
当前Buildroot版本为Buildroot 2016.08.1
整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样。
$ make menuconfig
配置界面如下:
在Target packages里面添加和裁剪一些工具,按需求定制系统功能,常用到的qt5、ssh、vsftpd、wpa_supplicant、pppd等都可在里面配置。
需要了解的是:
Buildroot配置好后,可以直接运行make
进行编译。
但是SDK下的app、device等目录将不会被编译到,所以配置完后,最好回到SDK根目录,执行./build_all.sh
进行编译。
如果在开发过程中,针对output/build/某个包源码进行了修改,需要单独重新编译该软件包,直接编译Buildroot是不起效果的。
Buildroot在编译某个包的时候,会将编译的过程,通过一些标志文件记录下来,保存在对应的软件包源码的目录里,这些标志文件分别有:
.stamp_configured .stamp_downloaded .stamp_extracted .stamp_patched .stamp_staging_installed .stamp_target_installe
这些标识文件主要控制这个软件包的下载,解压,打包,配置,编译,安装等。具体详细说明可参考:
docs/manual/rebuilding-packages.txt
也可以直接看mk文件,了解原理:
package/pkg-generic.mk
要想重新执行哪一个步骤,相应的就要删掉其对应的标志文件。假如你想重新编译某软件包源码,只需删掉该目录下的.stamp_built和.stamp_target_installed,然后再编译整个Buildroot就可以了。
当然,Buildroot有更快捷的实现方法。
make show-targets
显示出本次配置所要编译所有的目标,即packages。make
将构建并安装该软件包及其依赖项。
同时我们还可以通过make
,对软件包单独调用构建中的某一步骤,如下:
Package-specific: <pkg> - Build and install <pkg> and all its dependencies <pkg>-source - Only download the source files for <pkg> <pkg>-extract - Extract <pkg> sources <pkg>-patch - Apply patches to <pkg> <pkg>-depends - Build <pkg>'s dependencies <pkg>-configure - Build <pkg> up to the configure step <pkg>-build - Build <pkg> up to the build step <pkg>-graph-depends - Generate a graph of <pkg>'s dependencies <pkg>-dirclean - Remove <pkg> build directory <pkg>-reconfigure - Restart the build from the configure step <pkg>-rebuild - Restart the build from the build step
因此,如果我们想重新编译xxx软件包,执行make xxx-rebuild
即可。
关于make的更多用法,可通过make help
获得。
全部0条评论
快来发表一下你的评论吧 !