Почему Yocto SDK не может создать Yocto SDK? - PullRequest
1 голос
/ 14 марта 2019

Здесь есть множество связанных вопросов, потому что я подозреваю, что задаю не тот вопрос. Связанные вопросы могут помочь кому-то понять, в чем заключается мое фундаментальное недоразумение.

Я прошел через:

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

В конце концов, похоже, что это святой Грааль Йокто / ОЕ.

Похоже, что наиболее функциональная среда x86_64 имеет:

git clone git://git.yoctoproject.org/poky

Он более функциональный, чем SDK, но как мне создать эту среду для другой платформы?

Существует ли SDK, который так же функционален, как эта git clone среда? Это означает, что у него есть работающий бит-бэк, и я могу кросс-сборку загрузочных образов для разных целей?

Вопросы:

  • Почему SDK не может создать SDK? (например, http://downloads.yoctoproject.org/releases/yocto/yocto-2.6/buildtools/)

    • Почему в SDK даже нет битбейка? (Ext SDK делает, но не любит добавлять его в путь).
    • Почему расширяемый SDK с правильно созданным env (и битбейком, добавленным к пути), кажется, предпочитает инструменты сборки с дистрибутивом, а не те, что в SDK? (при непосредственном использовании bitmake вместо devtool)
  • Почему SDK явно привязан к сборке для конкретной машины или архитектуры и, по-видимому, не способен кросс-сборку для разных архитектур? Процесс создания SDK даже желает, чтобы окончательная архитектура была указана заранее

Я привык к сборке-sysroot с кросс-цепочкой инструментов, работающей под каким-то псевдо / proot / chroot с моими источниками, подключенными к нему.

Я понимаю, что Yocto / bitbake делает это под капотом, все кэширование рецептов кажется великолепным, проверка клонов git кажется мощной, рабочий процесс devtool кажется великолепным, но затем все падает, когда я пытаюсь стандартизировать генерацию этой среды. или сделайте кросс-компиляцию.

(я ожидаю получить исходный файл среды из целевого каталога, содержащего некоторые локальные файлы conf для специализированной сборки, а затем использовать bitbake для сборки)

Что я пропустил? - спасибо, что прочитали это далеко; -)

Ответы [ 2 ]

1 голос
/ 17 марта 2019

SDK - это такое общее слово, что в контексте yocto его можно неправильно интерпретировать, поэтому ваш вопрос правомерен.

Yocto - замечательный инструмент для создания полностью пользовательских образов, который можно настраивать на всех уровнях (загрузчик, ядро, приложения) в зависимости от источника, извлеченного из Интернета. SDK, который вы можете создать с помощью yocto, указан в документации:

Стандартный SDK предоставляет набор инструментов для кросс-разработки и библиотеки с учетом содержания конкретного изображения .

Основываясь на моем небольшом опыте работы с Yocto, вы используете мета-слои для создания и настройки своей среды. Когда ваша среда настроена, вы можете сгенерировать SDK для простой кросс-компиляции ваших аппликативных программ для вашей целевой машины. Инструмент Yocto слишком мощный, тяжелый и сложный для разработчиков, которые сосредоточены только на аппликативной части проекта. SDK на другой стороне идеально подходит для этого использования, но вы не можете ничего с ним изменить в цепочке инструментов, вы можете только использовать его. Например, если необходимо применить ошибку или исправление в библиотеках среды выполнения, вам необходимо заново сгенерировать SDK и предоставить разработчикам новые версии.

С этими короткими объяснениями:

Это более функционально, чем SDK, но как мне сделать это? среда для другой платформы?

Вам необходимо настроить мета-слои Yocto для перехода с платформы на другую.

Существует ли SDK, который так же функционален, как среда git clone'd? Это означает, что у него есть рабочий битбейк, и я могу создавать кросс-загрузочные образы для разных целей?

Нет, я так не думаю

Почему SDK не может создать SDK?

Поскольку это не философия SDK, sdk - это сгенерированный набор инструментов для конкретного образа для кросс-компиляции ваших программ, не более.

Почему в SDK нет даже битбейка?

Bitbake - это инструмент для синтаксического анализа рецепта yocto (таким образом, мета-слои), поэтому нет необходимости иметь этот инструмент в SDK

Почему SDK явно привязан к сборке для конкретной машины или архитектура, и, по-видимому, не в состоянии кросс-сборки для разных архитектуры? Процесс создания SDK даже желает финала архитектура уточняется заранее

Я думаю, что я уже дал ответ на этот вопрос, но о второй части вашего вопроса. Можно быть немного гибким и запускать как BSP, так и приложения параллельно. Каждую неделю вы выпускаете новый SDK с новыми изменениями BSP, а набор инструментов всегда актуален для разработчиков (это очень идеалистическое видение, я признаю)

0 голосов
/ 20 марта 2019

Чтение с https://www.yoctoproject.org/docs/2.6.1/ref-manual/ref-manual.html#cross-development-toolchain

кажется, что SDK и eSDK являются примерами перемещаемого набора инструментов;

Перемещаемая цепочка инструментов, используемая разработчиками вне BitBake, когда разработка приложений, которые будут работать на целевом устройстве.

Это предложение особенно отдает игру:

Вы также можете найти больше информации об использовании перемещаемого набора инструментов. в разработке приложений Yocto и расширяемый Руководство по разработке программного обеспечения (eSDK).

ТАК Я предполагаю, что проверка git-clone-poky, которая создает SDK и eSDK:

Набор инструментов, используемый только и внутри BitBake при построении изображения для целевой архитектуры

Без сомнения меня интересует:

концепции набора инструментов в применении к проекту Yocto

и следует:

см. Раздел «Создание набора инструментов для кросс-разработки» в Yocto Руководство по обзору и концепции проекта https://www.yoctoproject.org/docs/2.6.1/overview-manual/overview-manual.html#cross-development-toolchain-generation

Конечно, первое изображение проясняет, что SDK предназначен для создания приложений, а не изображения. Я хочу создать образ (который, конечно, может содержать приложения).

И поэтому я могу захотеть сделать SDK для других разработчиков приложений, включить их приложение в мои исходные коды и сделать для них окончательную сборку.

Может также случиться, что цепочка инструментов, используемая для создания образа, может быть запущена в SDK, чтобы использовать цепочку инструментов SDK, а не цепочку инструментов linux distro нет, вы можете «т

...