在烘焙食谱中创建符号链接

Ber*_*ues 3 symlink bitbake yocto

我有一个.bbappend配方,需要在系统中创建一个符号链接。

现在是这样的:

bernardo@bernardo-ThinkCentre-Edge72:~/yocto/genericx86-64-rocko-18.0.0/meta-datavision/recipes-devtools/oracle-java$ cat oracle-jse-jdk_1.7.0.bbappend 
FILES_${PN} += "/lib64/ld-linux-x86-64.so.2"

do_install_append() {
    install -d ${D}/lib64
    ln -s ${D}/lib/ld-2.26.so ${D}/lib64/ld-linux-x86-64.so.2 
}
Run Code Online (Sandbox Code Playgroud)

但是,在sysroot中仅创建目录/ lib64。没有生成符号链接/lib64/ld-linux-x86-64.so.2。

为了正确创建此符号链接,我应该在配方中进行哪些更改?

小智 8

最干净的解决方案是使用“ -r”标志:

do_install_append(){
    安装-d $ {D} / lib64
    ln -s -r $ {D} /lib/ld-2.26.so $ {D} /lib64/ld-linux-x86-64.so.2 
}

在gnu ln手册页中:

       -r,--relative创建相对于链接位置的符号链接


Chr*_*oyd 8

对于 Yocto 2.3 至 3.4:

do_install_append() {
    install -d ${D}/lib64
    lnr ${D}/lib/ld-2.26.so ${D}/lib64/ld-linux-x86-64.so.2 
}
Run Code Online (Sandbox Code Playgroud)

对于 Yocto 4.0+(或者如果您的主机系统具有 coreutils 8.16+):

do_install:append() {
    install -d ${D}/lib64
    ln --relative --symbolic ${D}/lib/ld-2.26.so ${D}/lib64/ld-linux-x86-64.so.2 
}
Run Code Online (Sandbox Code Playgroud)

或者,您也可以inherit relative_symlinks将任何绝对符号链接转换为相对符号链接,但这比lnr.

比照:

  • lnr 已在 4.0 中删除 https://docs.yoctoproject.org/migration-guides/migration-4.0.html?highlight=lnr#miscellaneous-changes (3认同)

ɛIc*_*ↄIз 6

尽量避免使用绝对路径:

do_install_append() {
    install -d ${D}/lib64
    cd ${D}/lib64
    ln -s ../lib/ld-2.26.so ld-linux-x86-64.so.2 
}
Run Code Online (Sandbox Code Playgroud)