YOCTO (Данфелл) правильный способ установки предварительно скомпилированных двоичных файлов

#node.js #yocto #bitbake

#node.js #yocto #bitbake

Вопрос:

Я пытаюсь создать настроенный образ Yocto для моего устройства RaspberryPi3. На самом деле, мне нужно установить NodeJS версии 6.10.3 (мне нужна именно эта версия), но рецепты, которые я нашел в репозитории «meta-nodejs», похоже, не работают. (не удается установить напрямую из meta-nodejs, это выдает мне ошибки типа «env python: команда env не найдена»). Итак, после того, как я протестировал непосредственно на Yocto os, я решил использовать предварительно скомпилированную версию для ARMV7L ( https://nodejs.org/dist/v6.10.3/node-v6.10.3-linux-armv7l.tar.gz ). Я создал свой собственный рецепт и «битбейкнул» прямо на своем изображении без каких-либо ошибок, но в двоичном файле, похоже, есть некоторые проблемы.

 root@yocto:~# node --version
Segmentation fault
  

Я сравнил этот файл с исходным и вижу, что тот, который находится в корневых файлах yocto, был «удален»

 root@yocto:~# file /usr/bin/node
/usr/bin/node: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.26, BuildID[sha1]=cbdb85ab56e5b0f7c31aeb0671fd9b6ae5984f81, stripped

root@yocto:~# file /opt/node-v6.10.3-linux-armv7l/bin/node
/opt/node-v6.10.3-linux-armv7l/bin/node: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.26, BuildID[sha1]=cbdb85ab56e5b0f7c31aeb0671fd9b6ae5984f81, with debug_info, not stripped
  

Итак, я попытался «поиграть» с добавлением моего рецепта:

 INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"
  

но я продолжаю получать ту же ошибку.

мой рецепт:

 DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
HOMEPAGE = "http://nodejs.org"
LICENSE = "MIT amp; BSD-2-Clause amp; BSD-3-Clause amp; ISC amp; AFL-2.0 amp; Apache-2.0 amp; OpenSSL amp; Zlib amp; Artistic-2.0 amp; (BSD-3-Clause | GPLv2)"

LIC_FILES_CHKSUM = "file://LICENSE;md5=41a3a0ccf7f515cac3377389dd8faac8"
    
RDEPENDS_${PN}  = "bash"

SRC_URI = " https://nodejs.org/dist/v6.10.3/node-v6.10.3-linux-armv7l.tar.gz"
SRC_URI[sha256sum] = "c36f0713fcf397a6b278b61f4c1511938f7ad1e5385c31e530d074ce83163426"

S = "${WORKDIR}/node-v${PV}-linux-armv7l"

do_install_append() {
        install -d ${D}/usr/
        cp -rf ${S}/* ${D}/usr/
}

FILES_${PN}  = "/usr/*"

INSANE_SKIP_${PN}  = "already-stripped"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"
  

Ответ №1:

благодаря пользователю «RP» из IRC-канала #Yocto: двоичный файл в созданном изображении был изменен с помощью опции «предварительная ссылка» в моем conf / local.conf:

 USER_CLASSES ?= "buildstats image-mklibs image-prelink"
  

после удаления «image-prelink» и повторной загрузки изображения все работает нормально.