кросом собирался, что там за сложности?
Кросс-тулчейном действительно собирать в разы проще, когда этот кросс-тулчейн есть или когда его вообще возможно собрать. Но иногда всё, что у тебя есть, — это железка с SD-картой и ядром и rootfs'ом на борту, где, о чудо, иногда ещё есть и компилятор. В таком случае ни исходников ядра, ни инструкций по сборке rootfs нет, из-за чего правильный кросс-тулчейн нужной версии собирать сложнее, чем собрать код прямо на железке. Другой вопрос, что когда ты встречаешься с жЫрным софтом, сборка на дохлой ARM-железке слишком медленная. В таком случае у тебя несколько вариантов: - собирать таки кросс-тулчейн, подставляя ему нужные версии libc и хэдэры ядра от rootfs'а железки - брать rootfs с железки и запускать сборку внутри него на хостовой системе Автор выбрал второй путь. Проблема лишь в том, что он виртуализировал ВСЁ оборудование, I/O, графику и т.д. тогда, когда было достаточно эмулировать системные вызовы и преобразовывать их из ARM-вызовов в x86. Для этого у qemu есть набор инструментов. Например, можно взять любой статический бинарь, собранный под армовый линукс (например, busybox) и запустить его через qemu-arm busybox. А можно пойти дальше и заchroot'иться в систему, засунув туда qemu-arm-static (static потому что у него не будет доступа до хостовых библиотек), тогда армовый /bin/bash будет запускаться, используя qemu-arm-static и библиотеки из chroot'а :)
Обсуждают сегодня