вторник, 6 апреля 2010 г.

Cross compiling midnight commander for nmt (Sigma SMP86XX) (Часть 1)

Собственно появилось желание установить новую версию mc на HDX-1000 и время разобраться в процессе кросс-компиляции.

Я буду проделывать все шаги от начала - почти полного незнания того, как делается кросс-копиляция, до, надеюсь, рабочего midnight commander.

Полного и исчерпывающего how to я нигде не нашел. Попытаюсь устранить пробел.


Хочу поблагодарить разработчиков и мейнтейнеров проекта midnight commander с которыми мне довелось пообщаться, а именно andrew_b, il.smind, repolainen, slavazanko за доброе отношение и желание помочь.
Итак, сначала Устанавливаем toolchain (кросс компилятор) для Sigma 86xx

Здесь отвлечемся и просто уточним процесс сборки из исходников программы в linux.

Собственно весь процесс сборки изображен на диаграмме слева.

Почти для всех программ этот процесс одинаков.

Когда мы собираем программу или библиотеку мы последовательно выполняем три шага


$ ./configure [param-1]...[param-n]
$ make
$ make install


Выполнение по шагам этой инструкции предполагает отсутствие ошибок. Составляя эту инструкцию, я все проделывал самолично и, думаю, значительно минимизировал их количество. Но, все таки, в вашей сборке могут выявиться ошибки, которые не возникли в моей конфигурации. Причин, почему это происходит, достаточно.
  • Во первых сам проект midnight commander далеко не тривиальный;

  • Все проекты созданы разными людьми, которые иногда и не осознавали как их творение будет использоваться;

  • Зачастую, разработчики не парятся тестированием своих проектов на совместимость с кросскомпиляцией;

  • Китайцы, которые реализовали устройство на китайской платформе Syabas, куда мы будем кросскомпилировать midnight commander, учились не в академгородке.

Есть еще пара десятков причин. Но не будем заморачиваться. Как правило, все проблемы решаются.

Теперь договоримся о структуре каталогов для ведения проекта.
Для сборки toolchain мы использовали каталог Staff. Он у нас и дальше будет корнем проекта.
А все библиотеки и сам midnight commander будут располагаться в каталогах ниже Staff по иерархии.
Ну вот теперь все готово. Вперед!

  1. Скомпилировать zlib

  2. Скомпилировать libpng

  3. Скомпилировать slang-2.2.2

  4. Скомпилировать gettext-0.16

  5. Скомпилировать libiconv-1.13.1

  6. Скомпилировать glib-2.22.5

  7. Скомпилировать midnight commander



Если нет подходящей темы, открывайте новую.

Пока еще:


Если есть желание помочь - велкам. В форуме есть все мои наработки.

Если лениво все это проделывать, то можно просто скачать
дистрибутив: mc-4.7.1-mipsel.tar.bz.
и библиотеки: mc-4.7.1-mipsel-libs.tar.bz

5 комментариев:

  1. Наконец-то дошли руки заглянуть сюда. :)

    попробовал поставить готовый вариант mc, что скомпилировали вы, не хватает библиотек для nmt:
    ldd ./mc
    libintl.so.8 => not found
    libslang.so.2 => not found
    libgmodule-2.0.so.0 => not found
    libiconv.so.2 => /lib/libiconv.so.2 (0x2aaed000)
    libglib-2.0.so.0 => not found
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2ac10000)
    libc.so.0 => /lib/libc.so.0 (0x2ac5f000)
    ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)


    если можно, запакуйте все необходимые для него библиотеки.

    ОтветитьУдалить
  2. Упс...
    Конечно.
    Сейчас запакую библиотеки...

    ОтветитьУдалить
  3. битые ссылки! вместо библиотек - 404-ый трамвай

    ОтветитьУдалить
  4. Буду в Москве 25, тогда разберемся.

    ОтветитьУдалить