Компиляция на ARMv8 - Запуск на ARMv7

Можно ли скомпилировать пакет на ARMv8 и запустить его на ARMv7?

Я не особо разбираюсь в строительстве (пока). Я пришел к этому вопросу, потому что мой Odroid C1+ не может скомпилировать icinga2 из-за очень ограниченного объема оперативной памяти. C2 имеет 2 ГБ ОЗУ и, вероятно, справится с этой задачей лучше.

Но могу ли я запустить скомпилированный пакет C2 (ARMv8) на своем C1+ (ARMv7)?


person Andrew Summer    schedule 07.05.2016    source источник


Ответы (1)


Можно ли скомпилировать пакет на ARMv8 и запустить его на ARMv7?

Это называется кросс-компиляцией и является обычным способом генерации кода ARM, только большинство машин для сборки двоичных файлов ARM в настоящее время, вероятно, x86_64. Но если у вас есть компилятор, ориентированный на платформу ARMv7, работающий на ARMv8, я не вижу проблемы.

Я не особо разбираюсь в строительстве (пока). Я пришел к этому вопросу, потому что мой Odroid C1+ не может скомпилировать icinga2 из-за очень ограниченного объема оперативной памяти. C2 имеет 2 ГБ ОЗУ и, вероятно, справится с этой задачей лучше.

Вы знаете, что намного лучше компилируется? Подходящий ПК с более чем 4 ГБ ОЗУ, большой пропускной способностью ОЗУ и гораздо более высокой пропускной способностью хранилища, с многоядерным ЦП CISC с высокой конвейерной обработкой, а не с энергоэффективным ARM.

Действительно, ПО для встраиваемых систем обычно создается на невстроенных компьютерах с кросс-компиляторами. Определенно существуют разные способы кросс-компиляции чего-либо для вашего C1+ на вашем ПК; Обычно я рекомендую использовать метод кросс-компиляции пакетов, который есть в вашем дистрибутиве Linux (если вы его используете).

ARMv7 — это платформа, отличная от ARMv8, поэтому компиляция программного обеспечения из ARMv7 на v8 не имеет преимуществ перед компиляцией программного обеспечения для ARMv7 на x86. В любом случае вам понадобится набор инструментов для кросс-компиляции.

person Marcus Müller    schedule 07.05.2016
comment
Ну что ж, с учетом сказанного... Пойду учиться кросс-компиляции. Большое спасибо за ваш информативный ответ! :) - person Andrew Summer; 08.05.2016
comment
компиляция программного обеспечения с ARMv7 на v8 не имеет преимуществ перед компиляцией программного обеспечения для ARMv7 на x86 - нет, абсолютно имеет, потому что с разумным дистрибутивом вы должны иметь возможность просто запускать 32-битный компилятор изначально и использовать multilib. Вы также можете сказать, что компиляция программного обеспечения с i386 на x86_64 не имеет преимуществ перед компиляцией программного обеспечения для i386 на POWER8? В конце концов, они бегают по кругу вокруг правильного ПК :P - person Notlikethat; 08.05.2016
comment
@ Не похоже на то, что ты говоришь. Если вы можете выбирать между компьютером Power8 с тактовой частотой 4 ГГц и процессором Pentium II с тактовой частотой 400 МГц для компиляции программного обеспечения для вашего Intel 386SX, едва ли есть смысл использовать машину с процессором Pentium, хотя их архитектура гораздо более похожа. Для компиляции абсолютно не нужны возможности выполнения нативного кода! - person Marcus Müller; 08.05.2016
comment
Это справедливо с точки зрения сырой производительности; однако с точки зрения простоты использования, учитывая, насколько устойчивыми к кросс-компиляции я считаю некоторые проекты (например, инструменты perf), возможность просто монтировать 32-битную файловую систему на 64-битной машине, chroot в это и запускать 32-битную цепочку инструментов очень ценно. - person Notlikethat; 08.05.2016
comment
@ Notlikethat что-то особенное в linux-tools (обычно входит исходный пакет, в который входит perf)? Я видел, как люди создавали это для ARMv7; iirc, OpenEmbedded/Yocto имеет рабочий слой для этого... - person Marcus Müller; 08.05.2016