【风火轮YY3568开发板免费体验】第三章:在 buildroot 框架中添加本地的 hello_world 软件包以及给包打patch
在第二章介绍了在buildroot框架下快乐编译 ffmpeg之后,本章就记录下如何在buildroot 的编译框架中添加一个新的软件包实现开发的一致性,这样做的好处是保持整个构建过程的统一,要不然可能还需要自己构建自己工程的编译环境,兼容buildroot编译框架的好处会随着开发软件包的复杂度提高逐渐显示出来这种做法的优越性。所以,本章就演示下如何根据 The Buildroot User Manual.pdf 的指导一步步完成 hello_world 工程到 builderoot package 的集成工作。
将本地的 hello_world 工程集成到 buildroot package 的编译框架如何集成 patch 的合并工作,在构建 hello_world 的自动打上这个 patch主要参考资料:[The Buildroot User Manual.pdf](The Buildroot User Manual.pdf)
(相关资料图)
1. hello_world 到 buildroot 的集成首先看一下 hello_world 工程本身的结构和内容: 下面就是准备将 hello_world 集成到 buildroot 中作为一个 package 进行构建,这部分首先看下一 buildroot 的 manual 是怎么描述的(The Buildroot User Manual.pdf中有详细的描述):
这里有关键的三类共计四个文件:
config 文件(配置的文件) Config.in 文件,交叉编译的工程,本次使用交叉编译 hello_wolrd 工程,最后的可执行程序运行在 YY3568 上,所以使用这个文件Config.in.host 文件,编译 host 的工程mk 文件(构建的文件 xxx.mk 文件,这个因为我对传统的 makefile 比较熟悉,所以本次使用的是就是 Makefiles for generic packages)hash 文件(下载的软件包的 hash 校验文件,xxx.hash文件,因为本次构建是直接使用的 local 的源码文件,所以不存在文件包的校验,所以这个文件暂时没有)根据上面的介绍,所以首先在 buildroot 的 package 目录中创建 hello_world 目录,然后创建 Config.in 和 hello_world.mk 文件,这两个文件的内容分别如下:
Config.in 文件,本次为了演示,仅仅使用了开启关闭编译 hello_world 的选项:
config BR2_PACKAGE_HELLO_WORLDbool "hello_world"help This is a comment that explains how to add new package to buildroot
hello_world.mk 文件:
################################################################################## hello_world#################################################################################HELLO_WORLD_VERSION = 0.9HELLO_WORLD_SOURCE = hello_worldHELLO_WORLD_SITE = /home/red/Public/buildroot_sample/hello_worldHELLO_WORLD_LICENSE = GPL-3.0+HELLO_WORLD_LICENSE_FILES = COPYINGHELLO_WORLD_INSTALL_STAGING = YESHELLO_WORLD_SITE_METHOD = localdefine HELLO_WORLD_BUILD_CMDS$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) allendefdefine HELLO_WORLD_INSTALL_STAGING_CMDS$(INSTALL) -D -m 0755 $(@D)/hello_world $(STAGING_DIR)/usr/binendefdefine HELLO_WORLD_INSTALL_TARGET_CMDS$(INSTALL) -D -m 0755 $(@D)/hello_world $(STAGING_DIR)/usr/binendef$(eval $(generic-package))
在 hello_world.mk 文件,关键的地方有 HELLO_WORLD_SITE_METHOD
需要设置为 local
,这样才会使用本地目录的原始文件;HELLO_WORLD_SITE
需要设置为本地 hello_world 工程源码的目录,而非 hello_world 工程(文件夹)所在的目录。
最后要修改的就是让 buildroot 的 Config.in 引用的 hello_world 的 Config.in,即相关的 diff 文件:
diff --git a/buildroot/package/Config.in b/buildroot/package/Config.inindex d18c688..d06ec07 100644--- a/buildroot/package/Config.in+++ b/buildroot/package/Config.in@@ -10,6 +10,7 @@ menu "Target packages" source "package/skeleton-init-sysv/Config.in" menu "Audio and video applications"+source "package/hello_world/Config.in" source "package/alsa-utils/Config.in" source "package/alsa-plugins/Config.in" source "package/atest/Config.in"
因为我会开发一个视频处理有关的应用,所以引用 hello_world 工程我就放在了 Audio and video applications
。 这样启动 buildroot menuconfig 配置找到 hello_world 的配置选项,选中进行构建。
将编译出来的 hello_world 通过 scp 发送到 YY3568,打印如下:
2. 给hello_world创建一个 patch,并依靠 buildroot 在构建的时候合并 patch 并编译有了第一部分的基础后,我们进阶一下,给 hello_world 打一个补丁,让 buildroot 在构建这个工程的时候先打上补丁在进行编译。
这里我们需要参看这部分内容:
首先我们创建这个补丁,补丁文件命名为0001-say-sth-else.patch:
diff --git a/main.c b/main.cindex dd0e127..fcbbe7e 100644--- a/main.c+++ b/main.c@@ -2,6 +2,6 @@ int main(int argc, char *argv[]) {-printf("red say hello world to YY3568n");+printf("red say sth else to YY3568 just for demonstate how to patch package in buildrootn"); return 0; }
放在 buildroot/package/hello_world 目录:
接着需要将原始的 hello_world 工程打包为一个压缩包,比如 hello_world.tar。然后修改 hello_world.mk 文件如下:
--- /tmp/tar_o.txt2023-08-12 12:41:28.772370902 +0800+++ /tmp/tar.txt2023-08-12 12:41:53.564330270 +0800@@ -4,12 +4,12 @@ # ################################################################################ HELLO_WORLD_VERSION = 0.9-HELLO_WORLD_SOURCE = hello_world-HELLO_WORLD_SITE = /home/red/Public/buildroot_sample/hello_world+HELLO_WORLD_SOURCE = hello_world.tar+HELLO_WORLD_SITE = /home/red/Public/buildroot_sample HELLO_WORLD_LICENSE = GPL-3.0+ HELLO_WORLD_LICENSE_FILES = COPYING HELLO_WORLD_INSTALL_STAGING = YES-HELLO_WORLD_SITE_METHOD = local+HELLO_WORLD_SITE_METHOD = file define HELLO_WORLD_BUILD_CMDS $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all endef
然后删除 buildroot/output/rockchip_rk3568/build/hello_world-0.9 目录,重新构建:
运行新编译出来的hello_world 到 YY3568,可以看到打印提示就变了:
切记不能用之前的 HELLO_WORLD_SITE_METHOD = local
这种方法实际我测试发现不会有打 patch 这个动作。
至此,就记录了如何为 buildroot 添加一个本地的软件包以及打 patch 的操作,将远端的软件包纳入 buildroot package 进行构建的方法是类似的,这里暂时就不记录了。这里提示下,如果 patch 是在远端的,该怎么办呢?需要就对应的 patch 文件添加到变量 _PATCH,这部分 The Buildroot User Manual.pdf 也有介绍。
标签:
推荐文章
- 【风火轮YY3568开发板免费体验】第三章:在 buildroot 框架中添加本地的 hello_world 软件包以及给包打patch
- 掷铁饼者是谁雕塑的雕的(掷铁饼者是谁雕塑的)
- 比纯电车更环保?试驾丰田第二代Mirai
- 含氯消毒剂消毒时间多长 含氯消毒剂消毒时间
- 黄州区农村公路事业发展中心开展路域环境整治活动
- 闻汛而动、暖心安置、合力重建——黑龙江全力打赢防汛救灾“遭遇战”“主动仗”
- 动起来!张雨霏邀你共同迎接首个体育宣传周
- 股票行情快报:荣旗科技(301360)8月11日主力资金净卖出88.18万元
- 德国玛蒂官网(德国玛蒂)
- 股票行情快报:贝泰妮(300957)8月11日主力资金净卖出1114.25万元
- 爱心改变命运|怀化女孩被兵器专业录取,希望争取保研为国做贡献
- 雅化集团:公司聘请了专业机构进行现场尽调与审计,并请评估机构进行了估值
- 邓保卫:创新方式 凝智聚力 在政协委员履职中主动担当作为
- 深科技股东博旭公司减持1753.22万股 套现3.35亿 2022年公司净利6.59亿
- 改造偏远连队供水管网 让群众喝上“放心水”
- 上海国际能源交易中心开展集运指数(欧线)期货品种做市商招募工作
- 拉卡拉:收钱吧是公司的重要的渠道合作伙伴
- 特一药业(002728.SZ):止咳宝片目前也是新冠病毒感染导致咳嗽的推荐止咳药
- 招商公路:以亳阜高速为基础设施资产开展公募REITs申报发行工作
- 60年来我国援阿医疗队累计诊治2700多万人次
- 《战国王朝》steam抢先体验开启 开放世界建造生存探索
- 选票怎么做格式是什么样的_选票表格模板
- 收评:A股三大指数集体大跌逾2%,北向资金净卖出123.37亿元,超过4600只个股下跌
- 小米大模型首次曝光
- 北极星太阳能光伏网发布一周要闻回顾(2023年8月7日-8月11日)
- 盟固利上市首日盘中暴涨37倍,“亨通系”崔氏父子躺赢
- 互动平台热点集要|多公司回应医药、新能源汽车等相关业务
- 海南“村VA”爆火 下半年文昌还计划举办一波精彩活动
- 花旗下调太古地产目标价至23.1元,评级“买入”
- 一碗隔夜蛋炒饭,竟致夫妻一死一伤
- 中信建投:GLP-1商业化超预期 研发迎重要突破
- 12345热线让群众急难愁盼有“着落”
- 快手获得时代少年团青岛演唱会独播权
- 宁德时代投资二手车检测平台查博士 成第一大股东
- 7月轿车销量榜单出炉 国产品牌反击 海鸥成“黑马”
- 2019MarutiErtiga试驾回顾最佳MPV
- 台风蓝色预警:“卡努”或于今天夜间进入我国辽宁
- 5928什么意思,59281什么意思
- 快评:赖清德将过境美国 “灰犀牛”来了?
- 注意防范!未来两天四川这些地方有强降雨
- 快写人物丨张雨霏:从“霏鱼”到“蝶后”
- 红岩葡萄文化节 | “再约红岩”!息烽2023年避暑季之第十四届红岩葡萄文化节圆满落幕
- 两人夜间被洪水围困 巡逻民警紧急解救
- 7 月新能源销量:一场属于“中国汽车”的胜利!
- 淘宝强势领跑,Q1用户、收入、利润全面超预期
- 新洋经济区城北社区开展暑期预防溺水安全知识讲座
- 聚焦可持续养老 这家医院推出一站式全健康医养等服务
- “管大熊猫”的副局长,被公诉!
- 【行业观察】“三破三立”推动银行收单业务高质量发展
- 福特电马微博号将关停 称因运营需要
- 2023福建漳州市诏安县拟聘用人员公示公告
- 溢缴款怎么转到储蓄卡?
- 翠微股份8月10日快速反弹
- 港股概念追踪|国内油价迎“四连涨” 港股石油股多数上涨 多重利好推动油价高位运行(附概念股)
X 关闭
最新资讯
- 俄罗斯莫斯科市长:2架飞往莫斯科的无人机被击落
- 上海银行间同业拆放利率(Shibor)集体下跌
- 小米12S Pro王者荣耀卡不卡
- 浙江世宝8月10日盘中跌幅达5%
- 一线直击:河北涿州抓紧新发地大石桥批发市场清淤工作
- 腾势N7作为比亚迪第500万辆新能源汽车交付至罗振宇
- 奔驰迈巴赫S62
- 美国司法部特别检察官获得对特朗普推特账户的搜查令
- 台风“卡努”或致东北地区再现较强降雨 雨要下多久?
- 上海浦东“双子山” 施工进度过九成
- 英阿因马尔维纳斯群岛主权问题再起争端
- 比亚迪第500万辆新能源汽车下线,中国汽车正书写历史
- 小篆在古代是用什么书写的 小篆在线转换
- 真假的记者:列维上周五已接受拜仁报价,但他让拜仁先放拒绝报价的消息
- 8月9日上市公司晚间公告一览
- 信安世纪:上半年净利亏损2779.07万元 同比转亏
- 市场监管总局发布一批重要国家标准,涉暑期活动等方面
- 捷林科技拟投资560万设立控股子公司上海广捷盛机械科技有限公司 持股70%
- 手机厂商“梦碎”物联网
- 进口货“上新”!前7个月我国外贸进口呈现哪些新趋势?
- 合富中国(603122)龙虎榜数据(08-09)
- Byf将命运2 Lightfall的故事视为格式错误
- 连连看经典游戏 经典连连看单机版
- 多彩健身活动 绘就幸福生活 松江区“全民健身日·体育宣传周“活动举办
- 英特集团(000411)8月9日主力资金净卖出298.53万元
- 三星哪款手机最好用的(三星哪款手机最好用)
- 德邦证券给予喜临门买入评级,Q2净利润微降,积极开拓线上线下渠道
- 对话医药合规律师李岑岩:这一轮医药反腐以往更猛烈,最近想做合规培训的企业变多了
- 欧曼重卡产地在哪里(欧曼卡车是哪国品牌)
- 兆威机电(003021)8月8日主力资金净卖出500.81万元
- 联想最新款ThinkBook Plus Twist笔记本上市:11999元起 双屏无极旋转
- 米哈游:《原神》4.0版本水下玩法揭秘;星铁卡芙卡角色PV上线
- 演唱会场内让手机直播吗 用会议软件共享演唱会直播有何风险 基本情况讲解
- 中国电信上半年净利润同比增逾10% 拟分红131亿元
- 信用卡贷款没钱还款怎么办理减少利息
- 浦东金桥:8月8日融券卖出4.56万股,融资融券余额1.92亿元
- 暑期游高峰迎来第二波,上市旅企开启“夜间不打烊”模式
- 美国联邦最高法院恢复拜登政府对“幽灵枪”限制法规
- 哥伦比亚毒枭乌苏加被判处45年监禁
- 8月8日基金净值:富安达新兴成长混合A最新净值0.8031,跌0.53%
- 报告称新能源汽车市场呈现马太效应,比亚迪和特斯拉挤压其它车企生存空间
- 暑托班让职工子女有依靠 企业连续办了12年
- 广西南宁机场迎来今年首个澳门入境旅游团
- 优化空间布局,提升产业能级,杲云调研部分文旅项目
- 广深港高铁将推出“灵活行”新产品
- 富强苑_关于富强苑介绍
- 桃园小鸡便当会 侯友宜:团结不只是口号
- V观财报|永辉超市涨停后澄清:不存在京东洽谈全资收购
- 《逆水寒手游》情侣相处任务流程
- 最高法:上半年全国法院新收各类案件1696万件
X 关闭