yocto создает символическую ссылку на /lib64

#yocto

#yocto

Вопрос:

У меня есть самописный рецепт для nodejs, потому что мне нужна конкретная версия. В рецепте я генерирую символическую ссылку из /lib64 в /lib. Когда символическая ссылка не существует, я получаю сообщение об ошибке при попытке запустить узел на своем устройстве.

 do_install () {
    # Create a symbolic link for the lib64 lib path
    install -d ${D}/lib
    ln -s /lib ${D}/lib64
}

FILES_${PN}  = "/lib64"
 

Я вижу в истории сборки, что ссылка существует, но когда я создаю образ, я всегда получаю следующий сбой.

 | /home/rail/yocto/build/tmp/work/odobox_e3900-poky-linux/odobox-developer-image/1.0-r0/recipe-sysroot-native/usr/sbin/prelink: Could not record directory /lib/modules-load.d: No such file or directory
| WARNING: exit code 1 from a shell command.
| DEBUG: Python function do_image finished
| ERROR: Function failed: prelink_image (log file is located at /home/rail/yocto/build/tmp/work/odobox_e3900-poky-linux/odobox-developer-image/1.0-r0/temp/log.do_image.3534)
 

Есть ли другое решение проблемы ?!

с наилучшими пожеланиями, Харальд

Комментарии:

1. ln -s ${D}/lib ${D}/lib64

Ответ №1:

Yocto представила новый инструмент связи «ЛНР»

Я создал пример рецепта (lnr-example) в среде сборки sumo:

 LICENSE = "CLOSED"

SRC_URI = "file://lnr.bin"

FILES_${PN}  = "/lib64"
FILES_${PN}  = "/lib"

S = "${WORKDIR}"

do_install() {
    install -d ${D}/lib/
    install ${S}/lnr.bin ${D}/lib
    lnr ${D}/lib/ ${D}/lib64
}
 

После построения примера, вот последняя папка «image»:

 $ ls -l tmp/work/aarch64-poky-linux/lnr-example/1.0-r0/image
drwxr-xr-x 2 talel talel 4.0K مارس  30 10:44 lib/
lrwxrwxrwx 1 talel talel    3 مارس  30 10:44 lib64 -> lib/
 

Помните, что вам также нужно упаковать /lib, потому что он завершится неудачей, если он содержит некоторый контент, проблема в том, что родительская задача, которая является /lib, не упакована, вот ошибка:

Файл ‘./lib64/lnr.bin’ не может быть упакован в ‘lnr-example’, поскольку его родительская структура каталогов не существует. Один из его родительских каталогов — это символическая ссылка, целевой каталог которой не включен в пакет.

И добавление (IMAGE_INSTALL_append = «lnr-example») выполнено без проблем.