Как создать среду ARM gcc / glibc для использования в системе ARM из x86? - PullRequest
1 голос
/ 14 июня 2019

Я создал голую систему Linux ARM.Он загружается в оболочку busybox без проблем в моей системе ARM.

Теперь я хочу создать рабочую среду gcc / glibc, которую можно использовать в моей системе ARM.

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

Мне нужно создать компилятор, который работает на ARM и создает двоичные файлы ARM.Но мне нужно собрать его на моем компьютере с архитектурой x86, а затем скопировать на мой компьютер ARM.Затем, в дальнейшем, я могу расширить систему, компилируя ее на компьютере ARM.

Итак, мне, вероятно, нужно использовать «кросс-компиляцию» для создания этого gcc / glibc, но результат должен быть ARM для ARMа не ARM для x86.Я прав?Это просто вопрос игры с переменными "taget", "host"?

Все учебники, которые я прочитал, показывают, как вы строите систему в изолированный целевой каталог, но они не объясняют, какие частиМне нужно скопировать в целевой корень системы ARM.

1 Ответ

0 голосов
/ 14 июня 2019

Итак, мне, вероятно, нужно использовать «кросс-компиляцию» для создания этого gcc / glibc, но результатом должен быть ARM для ARM, а не ARM для x86.Я прав?

Это правильно, но не полный рабочий процесс.Вам нужно больше компиляторов, чем вы можете себе представить.

Это просто вопрос игры с переменными "target", "host"?

Это более сложночем вы могли бы сначала представить.Я хотел бы отослать вас к Crosstool-NG Типам Инструментов и Канадский Крест Википедии для справки.

Небольшое чтение покажет, что вы пытаетесь сделать кросс-нативный компилятор с, я предполагаю, сборкой как x86-glibc-linux, хостом как arm-glibc-linux и целевой как arm-glibc-linux.Вам нужен собственный компилятор (x86-glibc-linux) для создания cross arm-glibc-linux, который работает на x86 (хост).Это потому, что cross native arm-glibc-linux должен создать glibc как часть цепочки инструментов, которая будет работать на ARM.Вам нужно больше, чем компилятор;компоновщик (gold?), библиотеки (shared / static) и т. д.

Crosstool-ng поддерживает это, и, как правило, yocto и дистрибутивы используют его для создания своей версии.Часто есть более эффективные способы сделать это, чем с помощью crosstool-ng, поскольку иногда достаточно только загрузочного компилятора и / или вы можете повторно использовать код, созданный для предыдущей сборки компилятора.См., Например,

«Кросс-нативный» набор инструментов может быть построен как тривиальный случай «канадского» набора инструментов.Это неоптимально, так как это заставляет crosstool-NG собирать инструменты, нацеленные на хост-компьютер, дважды (во-первых, как отдельный набор инструментов, который является обязательным условием для всех сборок в Канаде; во-вторых, как часть временного набора инструментов, созданного как часть канадского).построй сам).Это, вероятно, будет улучшено в будущем.

Однако, если это делается редко, вы можете строить это здание, пока вы занимаетесь другими делами.Мне потребовалось несколько дней, чтобы создать канадский кросс "x86-64-linux / x86-mingw / arm-linux", чтобы позволить разработку Windows для устройства ARM Linux.Если вы думаете, что создадите этот компилятор много раз (например, для отслеживания разработки gcc), вы можете захотеть взглянуть на собственный скрипт вместо crosstool-NG.

...