rockchip Linux buildroot 开发笔记

世界杯足球直播

一、buildroot 编译时间长

buildroot 第一次编译时间通常在8到11个小时,因为第一次编译需要download 依赖的包,因为部分资源在国外服务器下载只有几KB的速度;另外应该就与buildroot自身编译方式有关了。

为避免每次编译都重新download依赖文件,可以将编译好的buildroot/dl/下的文件提交至git仓库,下次取代码重新编译就不用再下载了。

二、buildroot修改源码后重新编译不会生效

修改分两种情况:(1)修改mk等不依赖源码的文件 (2)修改有程序源码,最终编译为可行性程序或lib

(1)这种情况似乎make cleanall后编译也不会生效,因为clean并没清楚中间文件,必须删除buildroot/output文件夹后整编

(2)可以删除"buildroot\output\firefly_rk3308_release\build\adbd\.stamp_*" ,然后重新编译即可(以修改adbd程序为例)

三、编译框架

有点类似kernel的架构

总配置文件路径buildroot\configs --类似kernel\arch\arm64\configs

根据总的配置加载其他目录下配置"buildroot\Config.in" --类似kernel的Kconfig 可以source其他子目录下的Config.in文件

各个目录下的.mk文件 --类似kernel下Makefile的作用

四、新增一个package

(1)在工程的config文件添加宏定义

例如:configs/firefly_rk3308_release_defconfig 添加BR2_PACKAGE_MIC_ARRAY=y

(2)在buildroot/package路径下(或package/rockchip下)新建mic_array文件夹(必须命名为mic_array,否则不会编译)

文件夹内新建mic_array.mk 和Config.in文件

Config.in文件

config BR2_PACKAGE_MIC_ARRAY

bool "mic_array"

default y

help

Use cloudwalk's mic_array

mic_array.mk文件(Cmake编译方式)

#####CMAKE BUILD

MIC_ARRAY_SITE = $(TOPDIR)/package/cloudwalk/mic_array/src

MIC_ARRAY_VERSION = release

MIC_ARRAY_SITE_METHOD = local

define MIC_ARRAY_COPY_LIBS

cp -f $(@D)/libs/* $(TARGET_DIR)/usr/lib64/

endef

MIC_ARRAY_POST_INSTALL_TARGET_HOOKS += MIC_ARRAY_COPY_LIBS

$(eval $(cmake-package))

也可以是Makefile编译方式(仅供参考)

# MIC_ARRAY_VERSION:=1.0.0

# define MIC_ARRAY_BUILD_CMDS

# $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \

# package/cloudwalk/mic-array-service/src/*.cpp -o $(@D)/mic_array

# endef

# define MIC_ARRAY_CLEAN_CMDS

# $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean

# endef

# define MIC_ARRAY_INSTALL_TARGET_CMDS

# $(INSTALL) -D -m 755 $(@D)/io $(TARGET_DIR)/usr/bin/mic_array

# endef

# define MIC_ARRAY_UNINSTALL_TARGET_CMDS

# $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) uninstall

# endef

# $(eval $(generic-package))

src目录下编写CMakelists.txt或Makefile文件

将新建的Config.in文件添加到上一级目录的Config.in里

然后./build.sh buildroot重新编译