2016-05-31 2 views
0

Я пытался построить только gcc с помощью yocto. Я пробовал с «bitbake-layers show-recipes», он показывал несколько рецептов для gcc, аналогично для bitbake -s.Строительство только gcc с помощью yocto

#bitbake-layers show-recipes 
gcc: 
    meta     4.8.2 
gcc-cross: 
    meta     4.8.2 
gcc-cross-canadian-arm: 
    meta     4.8.2 
gcc-cross-initial: 
    meta     4.8.2 
gcc-crosssdk: 
    meta     4.8.2 
gcc-crosssdk-initial: 
    meta     4.8.2 
gcc-runtime: 
    meta     4.8.2 
gccmakedep: 
    meta     1:1.0.2 

#bitbake -s 
gcc             :4.8.2-r0       
gcc-cross           :4.8.2-r0       
gcc-cross-canadian-arm        :4.8.2-r0       
gcc-cross-initial         :4.8.2-r0       
gcc-crosssdk          :4.8.2-r0       
gcc-crosssdk-initial        :4.8.2-r0       
gcc-runtime           :4.8.2-r0       
gccmakedep           1:1.0.2-r3 

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

В yocto есть ли один матч для рецепта и упаковки. Для создания каждого пакета существует только один рецепт?

ответ

0

GCC - это огромный проект. Возможно, этот recipe может помочь вам понять GCC и Yocto немного лучше. Следующая информация некоторая информация парафраз из «Embedded Linux проектов с использованием Yocto проекта Cookbook» Алекс Гонсалес

GNU Набор инструментов содержит следующие компоненты:

Assembler (GNU, как): часть пакета BinUtils

компоновщик (GNU Id): часть пакета BinUtils

Compiler (GNU GCC): поддержка для C, C++, Java, Ada, Fortran, и Objective C

Debugger (GNU GDB): GNU отладчик

Бинарные инструменты файл (objdump, нм, objcopy, readelf, полоса, и так далее): они являются частью пакета BinUtils

Эти компоненты являются достаточно для сборки голых металлических приложений загрузчики, такие как u-boot, Linux Kernel, потому что им не нужна библиотека C , и они реализуют функции библиотеки C, в которых они нуждаются. Библиотека COS, совместимая с POSIX, необходима для приложений пользовательского пространства LInux.

glibc - библиотека по умолчанию C, используемая в проекте Yocto.

На встроенных системах нам нужна перекрестная компиляция. Мы строим на главном компьютере, но запускаем результирующие бинарины на цели, которая обычно отличается архитектурой. Существует несколько типов инструментальных цепей , основанных на машине сборки, целевой машине.

Наиболее распространенные комбинации:

Native: Пример этого является x86 машина работает набор инструментов, который> также был построен на машине x86 производства двоичных файлов для запуска на x86 машине. Это часто встречается на компьютерах .

Кросс-компиляция: это наиболее распространенный на встроенных системах ; например, на машине x86 была построена машина x86 с технологической цепочкой, которая также имеет , но создает двоичные файлы для работы в другой архитектуре, например ARM.

Перекрестная натура: Обычно это цельная цепная цепь .Примером этого является то, где Набор инструментов был построен на x86 машине, но работает на ARM и производит

Canadian: Редко видел, это где сборка, хост и целевой машины все разные.

3

Объяснять каждый в свою очередь:

  • НКУ рецепт для НКУ, который работает на самой целевой машине.
  • gcc-cross - это кросс-компилятор, который использует система сборки. Если вы создадите какой-либо рецепт для цели, которая должна быть скомпилирована с помощью gcc, это то, что будет использовано для ее компиляции.
  • gcc-cross-canadian- является окончательным передислоцирующим кросс-компилятором для SDK, в данном случае для архитектуры ARM.
  • gcc-crosssdk является промежуточным этапом в производстве gcc-cross-canadian.
  • * -начальные исходные версии компилятора, необходимые для начальной загрузки инструментальной цепочки отдельно для стандартного кросс-компилятора и для SDK.
  • gcc-runtime создает компоненты времени выполнения, которые входят в состав gcc (например, libstdC++).
  • gccmakedep не является частью самой gcc, это скрипт, который входит в состав утилит X11, которые некоторые проекты должны определять зависимости для каждого исходного файла.

Когда вы говорите, «вам нужно только построить GCC», это не совсем понятно, что вы имеете в виду, но я подозреваю, что это либо НКУ для цели (в этом случае это «GCC», хотя я подозреваю, что вы будете вероятно, потребуется больше, чем это может быть то, что вы хотите), или вам нужен кросс-компилятор, который вы можете установить отдельно, и в этом случае вы, вероятно, должны bitbake meta-toolchain или bitbake -c populate_sdk imagename. Это будет содержать больше, чем просто gcc, но, скорее всего, gcc в любом случае не будет достаточным.

+0

Мне нужно скомпилировать сторонний исходный код для IMX6, мне понадобилась инструментальная цепочка IMX6 для перекрестного компиляции. Поскольку полная сборка (bitbake core-minimum-image) занимает больше времени, а между ними происходит сбой при загрузке необходимых пакетов с использованием наборов, поскольку в URL-адрес сети, если размер пакета огромен. Поэтому я думал, что создание только инструментальной цепочки с использованием yocto займет меньше времени, а также сбои загрузки и минимальные. – Ravi

+0

Я был бы очень удивлен, если бы вы уже не нашли встроенный установщик IMX6 SDK/toolchain. В противном случае выполните загрузку за пределами вашей корпоративной сети, используя битбак -c fetchall , а затем принесите это через sneakernet, чтобы закончить. – bluelightning

+0

Я также менял конфигурацию цепочки инструментов, чтобы отключить жесткую плавающую точку, изменив некоторые файлы inc. Каждый раз, когда я изменяю одну переменную, я также очищаю и создаю изображение. Поскольку большую часть времени я ждал завершения сборки. Я проверил, как построить только необходимый пакет с помощью yocto, но я видел несколько пакетов для gcc, когда я проверил список пакетов с помощью битбокса -s. – Ravi

Смежные вопросы