网络营销要怎么做,南京seo关键词排名,上海保洁服务网站建设,app store下载安卓前言
目的#xff1a;应用开发时最初是没有和buildroot中一起编译时#xff0c;后面应用程序写的差不多时#xff0c;同事问我怎么把应用程序打包到文件系统中#xff0c;然后发布时跟随文件系统一起发布#xff0c;并且增加打包启动脚本。所以本文在已经可以单独编译的基…前言
目的应用开发时最初是没有和buildroot中一起编译时后面应用程序写的差不多时同事问我怎么把应用程序打包到文件系统中然后发布时跟随文件系统一起发布并且增加打包启动脚本。所以本文在已经可以单独编译的基础上把项目放入buildroot一起编译。 应用程序单独可以编译buildroot 有make sdk 单独打包编译环境。 本文简化了项目部分内容仅以demo 为项目代号记录在buildroot中增加qt项目的过程。
环境ubuntu20.04 、瑞芯微 RV1109 SDK 实现方法
1. 在app 目录下创建一个qt工程
创建过程省略当然后创建工程的路径也可以任务指定不一定非得在SDK中的app目录下只是app下面有很多其它的demo这里也就放在app路径下了。这里假设app目录下创建工程文件名为demo/gui/demo.pro 工程
2.buildroot的操作
在SDK路径/buildroot/package 创建一个demo 文件夹文件夹中分别创建二个文件一个demo.mk 另一个为Config.in ; 内容分别为
demo.mk
################################################################################
#
# demo
#
################################################################################DEMO_VERSION 1.0
DEMO_SITE ${TOPDIR}/../app/demo
DEMO_SITE_METHOD localDEMO_LICENSE Apache V2.0
DEMO_LICENSE_FILES NOTICEdefine DEMO_CONFIGURE_CMDScd $(D)/gui/;$(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake ;
endefdefine DEMO_BUILD_CMDSsource $(D)/gui/../work_sdk_path.sh; $(TARGET_MAKE_ENV) $(MAKE) -C $(D)/gui/
endefdefine DEMO_INSTALL_TARGET_CMDS$(D)/app_install.sh $(TARGET_DIR)
endef$(eval $(generic-package))
注意这里 多了个/gui/ 因为写建工程时demo.pro 是放在工程目录gui下方的。
Config.in
config BR2_PACKAGE_DEMObool demohelpthis is a app for QT Buildroot demo
在/buildroot/package 路径下增加“source package/demo/Config.in”
menu Target packagessource package/busybox/Config.insource package/rockchip/Config.insource package/skeleton/Config.insource package/skeleton-custom/Config.insource package/skeleton-init-common/Config.insource package/skeleton-init-none/Config.insource package/skeleton-init-systemd/Config.insource package/skeleton-init-sysv/Config.insource package/testApp/Config.insource package/demo/Config.in
3.验证使用buildroot 编译是否正确
先设置编译buildroot的环境执行source envsetup.sh rockchip_rv1126_rv1109_facial_gate。下面是查看当前sdk使用哪个环境编译的。
ubuntu:~/work/rv1109_rq/rv1126_1109_20220429$ ./build.sh -h rootfs
###Current SDK Default [ rootfs ] Build Command###
source envsetup.sh rockchip_rv1126_rv1109_facial_gate
make
然后再进入buildroot目录 执行
1make demo-dirclean 删除掉工buildroot缓存的工程目录 因为在测试过程中我们的文件一直是放在app下有时增加或者修改单独编译qmake与buildroot下的不同所以需要先clean 删除。
2make demo-rebuild 进行编译看是否报错
如果不报错就接近使用了。
4.buildroot 的menuconfig中设置
选择BR2_PACKAGE_DEMO 后面在buildrootk 整个make 就可以执行整个流程了
实际问题
从上面的流程中只是一般性的描述了如何把一个工程放入buildroot下编译并且编译成功但并没有解决打包的问题同时增加的buildrot因为文件目录众多关系有点绕。其他人只关心怎么把应用程序、配置、资源文件、启动脚本打包进文件系统。至于buildroot 如果去配置他们不关心也不想经常去改。且多人配合时路径问题如何管理。
路径管理
多人开发时引用头文件或者库的路径问题怎么才不至于不同开发人员间频繁的修改代码或者配置
下面方式通过设置WORK_SDK_PATH 来实现不同路径的切换 INCLUDEPATH $(WORK_SDK_PATH)/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/easymediaINCLUDEPATH $(WORK_SDK_PATH)/rv1126_1109_20220429/external/rkfacialINCLUDEPATH $(WORK_SDK_PATH)/rv1126_1109_20220429/external/rknpu/rknn/rknn_api/librknn_api/includeINCLUDEPATH $(WORK_SDK_PATH)/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/drm
程序编译时环境配置
修改DEMO_BUILD_CMDS source $(D)/gui/../work_sdk_path.sh; $(TARGET_MAKE_ENV) $(MAKE) -C $(D)/gui/ 来设置“路径管理”中设置的变量这个脚本在app/demo/work_sdk_path.sh 路径下。
打包时调用自定义脚本
修改DEMO_INSTALL_TARGET_CMDS $(D)/app_install.sh $(TARGET_DIR) 这个脚本在app/demo/app_install.sh 路径下
注意$(D) 表示的并不是app/demo的目录表示的是buildroot/output/build/demo 下的路径