Buildroot开发 SDK目录 SDK工程目录介绍: 工程目录下有 buildroot、 app、 kernel、 u-boot、 device、 external、 prebuilts、rockimg、tools 等目录。 buildroot:用于生成根文件系统、交叉编译工具以及相关工具和应用的管理; app:存放上层应用 app; external :相关库,包括音频、视频、网络等; kernel::kernel 代码; device/rockchip/px3-se:存放开机初始化脚本,存放第三方库、 bin、 alsa、 wifi等配置文件;另还存放编译脚本; prebuilts:存放编译 kernel 需要的 gcc 和交叉编译工具 toolschain; rockimg:存放编译输出固件; tools:存放平台工具。 Buildroot开发 当前Buildroot版本为Buildroot 2016.08.1 buildroot目录介绍 buildroot/package/:下面放着应用软件的配置文件,每个应用软件的配置文件 有Config.in和soft_name.mk其中soft_name.mk(这种其实就Makefile脚本的自动 构建脚本)文件可以去下载应用软件的包。 buildroot/output/:是编译出来的输出文件夹,里面的build/目录存放着解压 后的各种软件包编译完后的现场。host/目录放着制作好的编译工具链,target/ 目录是用来制作rootfs的,里面放着Linux系统基本的目录结构,以及各种编译 好的应用库和bin可执行文件。Images/目录下就是最终生成的可烧写到板子上的 各种image。 buildroot/dl/:存放下载的源码包及应用软件的压缩包 buildroot/fs/:放各种文件系统的源代码 buildroot/fs/skeleton/:放生成文件系统镜像的地方,及板子里面的系统 buildroot/linux/:存放着Linux kernel的自动构建脚本。 buildroot/configs/:放置开发板的一些配置参数, buildroot/docs/ :存放相关的参考文档。 buildroot/arch/ :目录存放CPU架构相关的配置脚本,如arm、mips、x86 ,这 些CPU相关的配置,在制作工具链,编译boot和内核时很关键。 配置Buildroot 整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译 Linux内核一样。 $ make menuconfig 配置界面如下: 在Target packages里面添加和裁剪一些工具,按需求定制系统功能,常用到的 qt5、ssh、vsftpd、wpa_supplicant、pppd等都可在里面配置。 需要了解的是: 进行编译时,buildroot根据配置,会自动从网络获取相关的软件包,包括一些 第三方库,插件,实用工具等,放在dl/目录。 软件包会解压在output/build/目录下,然后进行编译。 如果要修改软件包的源码,可以通过打补丁的方式进行修改,补丁集中放在 package/目录,buildroot会在解压软件包时为其打上相应的补丁。 编译Buildroot 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: - Build and install and all its dependencies -source - Only download the source files for -extract - Extract sources -patch - Apply patches to -depends - Build 's dependencies -configure - Build up to the configure step -build - Build up to the build step -graph-depends - Generate a graph of 's dependencies -dirclean - Remove build directory -reconfigure - Restart the build from the configure step -rebuild - Restart the build from the build step 因此,如果我们想重新编译xxx软件包,执行"make xxx-rebuild"即可。 关于make的更多用法,可通过"make help"获得。 Buildroot官网 更加详细具体的开发技巧可到Buildroot官网学习。 Buildroot官网:https://buildroot.org/ 查看Buildroot开发手册