Yocto打包符号链接异常:符号链接变为普通文件求助
问题分析
你的符号链接被识别为普通文件,本质是因为Makefile中使用ln -srf创建的链接可能被处理为绝对路径,或者Yocto打包系统未正确识别软链接,最终导致链接被当成原文件复制,占用额外空间。
解决方案
1. 修改Makefile,仅保留实际库文件的安装
移除Makefile中创建符号链接的命令,只保留核心库文件的安装逻辑:
install -Dm 0755 libabc.so.0.1 ${INSTALL_PREFIX}/libabc.so.0.1 # 移除以下两行ln命令 # ln -srf ${INSTALL_PREFIX}/libabc.so.0.1 ${INSTALL_PREFIX}/libabc.so # ln -srf ${INSTALL_PREFIX}/libabc.so.0.1 ${INSTALL_PREFIX}/libabc.so.0
2. 在Yocto配方中手动创建相对路径的软链接
在配方中添加do_install_append()函数,直接在部署目录${D}下创建相对路径的软链接,确保Yocto能正确识别:
do_install_append() { # 创建指向核心库的相对路径软链接 ln -sf libabc.so.0.1 ${D}${libdir}/libabc.so.0 ln -sf libabc.so.0.1 ${D}${libdir}/libabc.so }
3. 保留原有的文件打包配置
原有的FILES:${PN}配置已经能覆盖所有相关文件和链接,无需修改:
FILES:${PN} += " \ ${libdir}/libabc* \ "
验证结果
烧录镜像后查看/usr/lib目录,会得到正确的软链接结构:
lrwxrwxrwx 1 root root 12 2026-01-19 6:54 libabc.so -> libabc.so.0.1 lrwxrwxrwx 1 root root 12 2026-01-19 6:54 libabc.so.0 -> libabc.so.0.1 -rwxr-xr-x 1 root root 6013280 2026-01-19 6:54 libabc.so.0.1
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

