Как перезаписать LD_FLAGS, установленный любым классом bb в пользовательском рецепте yocto? - PullRequest
1 голос
/ 06 мая 2020

В моем проекте yocto у меня есть рецепт приложения, который строит исполняемый файл из cpp исходных файлов для целевой архитектуры. Он также поддерживает создание сборки для собственной цели (Ubuntu 16.04), для которой в файле рецепта есть строка BBCLASSEXTEND = "native". исполняемый файл создается для собственной цели, просто отлично работает на том же компьютере. Но команда ldd в исполняемом файле показывает, что динамический c -загрузчик (ld), используемый с исполняемым файлом, не является значением по умолчанию (/lib64/ld-linux-x86-64.so.2), он использует пользовательский ld-linux-x86-64.so из build/tmp/sysroots-uninative/x86_64-linux/lib/ld-linux-x86-64.so.2, однако он связан с загрузчик по умолчанию. Но если мы запустим один и тот же двоичный файл на другом компьютере, этот sys root -uninative путь будет неразрешенным, что приведет к тому, что двоичный файл не будет работать на другом компьютере с той же архитектурой. при запуске на другом компьютере отображается ошибка «Нет такого файла или каталога».

После подробного исследования я узнал, что --dynamic-linker (флаг компоновщика) установлен uninative.bbclass в LD_FLAGS. который по умолчанию наследуется в poky/meta-poky/conf/distro/poky.conf. Удаление этой строки из файла poky/meta-poky/conf/distro/poky.conf решает мою проблему, но я не знаю ее побочных эффектов.

Так что любой может предложить мне, как мы можем перезаписать значение LD_FLAGS в моем файле recipe.bb? так что я могу удалить значение флагов --dynami c -linker или перезаписать загрузчиком по умолчанию (/lib64/ld-linux-x86-64.so.2)

Заранее спасибо.

...