如何让Yocto将剥离后的可执行文件复制到tmp/deploy/images?
解决Yocto复制剥离后可执行文件到deploy目录的问题
- 直接复制目标安装目录下的文件
Yocto编译完成后,会在${D}(目标安装目录)中生成剥离调试信息后的可执行文件,而编译目录${B}下保留的是带调试信息的大体积版本。修改你的do_deploy函数,直接从${D}路径复制:
do_deploy() { # 创建目标部署目录 install -d ${DEPLOYDIR}/images/${MACHINE} # 复制剥离后的可执行文件 install -m 0755 ${D}/usr/bin/your_executable ${DEPLOYDIR}/images/${MACHINE}/ }
其中${DEPLOYDIR}对应tmp/deploy路径,${MACHINE}是你的机器架构子目录,替换/usr/bin/your_executable为你实际的可执行文件安装路径。
- 确认配方继承基础类并开启剥离
确保你的配方继承了base类(多数配方默认已继承),它会自动处理文件剥离。同时检查STRIP变量未被禁用,默认配置为:
STRIP = "${TARGET_PREFIX}strip"
如果手动关闭过剥离,可在配方中重新启用:
INHIBIT_PACKAGE_STRIP = "0"
验证文件状态
构建完成后,可通过以下路径对比文件大小:- 剥离后文件:
tmp/work/${MACHINE}/your_recipe/version/image/usr/bin/your_executable - 未剥离文件:
tmp/work/${MACHINE}/your_recipe/version/build/your_executable
确认前者体积更小,即为正确的剥离版本。
- 剥离后文件:
配置meta-swupdate包含目标文件
在meta-swupdate的更新配置中,添加你部署到tmp/deploy/images/${MACHINE}下的可执行文件路径,确保生成cpio时会纳入该文件。
内容的提问来源于stack exchange,提问作者Arne J
相关产品推荐
相关产品推荐

