На фоне одной из моих раннее созданных тем по поводу компиляции драйверов WiFi "свистка" под спутниковые ресиверы, меня частенько "долбят" в аську/личку с вопросами "а как"?
Основной из которых - чем и как собирать, с остальным вроде как Google ещё в силах помочь.
Так вот большая часть как плагинов, так и схем оформлений (иначе "скинов") под Enigma2 написана на языке программирования Python. Однако для тех, у кого нет времени или просто не видит смысла на освоение достаточно простого скриптового языка, но на "ты" с C или/и C++ и тем более Linux, тоже может внести свою лепту в развитие Enigma2. Это и полное управление операционной системой, и компиляция драйверов, например, для новых чипсетов WiFi-адаптеров, и, наконец-то, та же доработка/разработка эмуляторов.
Однако, как известно, нативной аппаратной платформой, под которую Enigma2 изначально разрабатывалась - процессоры Broadcom, а точнее mipsel-архитектура. Что явно отличается от наших десктопов, а значит нужны компиляторы под конечную платформу, которые, как оказалось, не так уж и просто достать. Поэтому обсуждение этой темы хотелось бы как раз и начать с кросскомпиляторов. Дальнейшие вопросы - по мере поступления (постараюсь по возможности и знаниям поддерживать топик в актуальном состоянии).
Итак, наиболее простой вариант - скачать готовый тулчейн. Вполне неплохой вариант выложен на сайте
oscam.
Однако он имеет древний компилятор
gcc 4.3.2 аж 6-ти летней давности. Остальное подавляющее большинство тулчейнов либо рассчитано под архитектуру mips (которая, в отличие от mipsel имеет обратный порядок байт (big endian), применяемый чаще в сетях, а значит и в роутерах, под которые этим сами тулчейны и выложены), либо рассчитаны под С библиотеку
uclibc, что нам тоже вроде как не совсем подходит (по крайней мере, в
OpenPLi по умолчанию установлена
libc, кстати последней на сегодня версии 2.19).
Поэтому выход только один - собирать тулчейн самому.
Самый простой вариант, для тех, у кого установлен "friendly-user linux", вроде ubuntu, - использовать утилиту
crosstool-ng. Кратко, как собрать нужный нам тулчейн в Ubuntu.
Качаем нужные библиотеки:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Получаем последнюю стабильную версию с сайта (svn у меня даже не собирался), распаковываем, переходим в папку с исходниками и собираем:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Далее копируем готовый образец конфига под нашу архитектуру (так же имеется вариант под sh4-процессоры):
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Можно просмотреть более подробные настройки через утилиту конфигурирования (как в ядре Linux) командой:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Особое внимание обратите на платформу -
mipsel и порядок байт
little endian, ну и
libc. Можно поставить флажок экспериментальных версий, однако ничего из них почти не собирается.
Ну, и запускаем на компиляцию:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Где - 4 число процессов сборки (для систем с многоядерными процессорами).
В процессе подготовки могут быть ошибки при скачивании архивов. Не отчаиваемся - гуглим по имени и кидаем в
./build/tarballs. Так же в процессе сборки могут появляться ошибки компила.
Опять-таки не расстраиваемся, а смотрим логи и исправляем (ещё более простой вариант - пробуем другую версию нужных либ, причём вписывать их можно непосредственно в .config-файл и разыскивая их в том же интернете).
Кому-таки собирать лень, может скачать мою сборку:
ссылка на скачивание. В архиве присутствует лог сборки с полным конфиг-файлом, на котором удалось собрать
gcc 4.4.7 с
libc 2.11 и последними
binutils 2.24. Как при помощи этого тулчейна собрать, например, тот же oscam, пример "how to" указан на их
wiki (скиньте кстати им ссылку на более свежий тулчейн).
Собрать с более свежей версией
gcc никак не получалось, так как на отказ не хотели собираться, то
Cloog, то
PPL.
Для тех же красноглазиков, которые не любят лёгких путей, и предпочитает полностью открытый софт, а так же всё самое свежее - неплохой вариант собирать ваши модули в
Gentoo.
Делать это даже проще, чем кажется. Устанавливаем Gentoo по
этой инструкции.
Уже в
Gentoo устанавливаем
crossdev:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Затем ставим нужный нам тулчен, например:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Опять-таки имеются
варианты под sh4-процессоры.
Устанавливаются актуальные хедеры ядра linux, компиляторов и библиотек. Например, вчера собрался тулчейн с
gcc 4.8.2,
libc 2.18,
binutils 2.24 и
kernel 3.12.13. С флагом
-v можно указывать конкретные версии библиотек, например
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
По пути
/etc/portage/make.confДобавляем строки следующего содержания:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Уже можем собирать нужные нам библиотеки. Например, для сборки
openssl:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Переходим в каталог с распакованными "сорцами" и
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Аналогично собираем, например, oscam (последнюю версию забираем с svn):
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Перед сборкой можем указать флаги оптимизации под конкретную платформу/процессор, что может дать неплохую прибавку к производительности. Для Vu+ Solo кроме стандартных флагов оптимизации из makefile'а в виде -O2 и -pipe добавил
-mips32r2 -mtune=mips32r2 -fno-caller-saves. По этому поводу более подробно уже гуглим самостоятельно по запросу "mipsel safe cflags".