You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 16:33:23