клёво, такую ветку нужно оформлять как дополнение к мануалу к плате
считаю не так сложно в вордовском файле вкраце описать ввобимые команды и предпринимаемые действия. кому - всей целевой аудитории, новичок узнает много нового, бывалый уточнит какие-либо свои знания. и нет, не стоит писать к каждому пакету свою инструкцию. достаточно на 1-2 примерах, чтобы была суть с чего начинать и что в итоге должно получиться.
почему ж не поверю..? поверю. рад за Вас и Вашим достижениям в данной области. но у каждого из здесь присутствующих разная начальная база знаний и пониманий. к примеру мне, пока не ясно как работать с платой. точного алгоритма действий нигде не находил, работать, не зная своих действий, несколько неверно, думаю согласитесь с этим.
я не говорил, что читать бессмысленно, всего лишь измолвил, что этот процесс идет параллельно работе с платой.
хорошо, немного отвлеклись от темы.
если пакет уже собран под арм как его на плату поставить? по теории деб-пакет ставится командой "dpkg -i name.deb". верно ли это предположение к плате? просто ни dpkg ни apt-get платой не распознаются (not found)
На платах нет пакетных менеджеров, собирается готовая корневая ФС и она целиком записывается на носитель. В исходном варианте помоему ядро вообще не использует nand а корневая находится в initramfs.
если это одиночный бинарник, то копируется в подходящее место рутовой на целевой плате
если требуются файлы конфигурации (для программы), то берутся оригиналы из пакета и правятся под себя, или создаются новые текстовые файлы, которые складываются в известное для программы место..
если это большой пакет с бинарниками и либами, то я бы поинтересовался Makefile в части install - чтобы посмотреть куда авторский мейкфайл раскидывает файлы в системе (это происходит после make install)..
кстати DEB файл - это обычный архив файлов, содержимое смотрится и извлекается стандартным MC
asimo, этот пакет собран для архитектуры x86. Вам же нужно собрать программу для ARM.
Вы вообще понимаете что плата и большая машина работают на процессорах с разными архитектурами и соответсвенно различным набором команд? Бинарные исполняемые файлы для PC нельзя запустить просто так на плате. Ну разве что только через эмулятор, но это тот ещё изврат.
Вам нужно собрать mjpg-streamer из исходников с помощью кросс-компилятора для исполнения на ARM-архитектуре. Для этого вам нужно знать и понимать следующие вещи:
1) Что такое стандартная сишная библиотека.
2) Какая сишная библиотека используется на вашей плате (uClibc, glibc, etc).
3) Что такое Makefile и как их написать/исправить. Использование команды make.
4) Знание соответствующих систем сборки, используемых для автоматической генерации Makefile'ов (autotools, cmake), по крайней мере на уровне использования ./configure и/или параметров cmake
5) После того, как вы сможете собрать программу, вам нужно будет её подпихнуть в вашу rootfs. Соответственно вам надо знать как пересобрать rootfs и подцепить её к ядру (или положить рядом с ним и передать соотв. параметр).
Во всём этом нет абсоютно ничего сложного. Просто нужно сесть и спокойно разобраться. Ибо здесь нужно понимание. Даже если вам дадут пошаговую инструкцию, то без понимания того, что вы делаете, вы даже этого повторить не сможете при малейшем изменении входных условий.
Ща я гляну на ваш mjpg-streamer...
1. Получаем последнюю версию исходных кодов из системы контроля версий SVN:
Строка
свидетельствует об успешном завершении процесса, и сообщает номер ревизии полученных исходных кодов.
2. Переходим в кталог с исходниками
3. Читаем README файл:
Теперь мы знаем что данный пакет требует libjpeg (для плагина input_uvc)
4. Файлы configure или CMakeList.txt не обнаружены, а есть только Makefile. Значит здесь не используется система сборки.
5. Переопределяем переменную окружения PATH
6. Правим Makefile. Заменяем во всех Makefile-ах строку CC = gcc на CC = arm-none-linux-gnueabi-gcc
То бишь во всех Makefile-ах просим использовать компилятор arm-none-linux-gnueabi-gcc вместо gcc для x86
В корневом Makefile меняем папку установки в переменной DESTDIR, я поставил /tmp/usr/local
7. Теперь нам нужен libjpeg. Вместо него будем использовать libjpeg-turbo - оптимизированная версия libjpeg.
Последовательность действий та же:
Качаем архив исходных кодов:
Распаковываем его:
Переходим в каталог с сорцами:
Смотрим на содержимое и читаем README. По файлу configure ясно, что это пакет использующий систему сборки autotools
Читаем вывод ./configure --help
Конфигурим исходный код
По строке
понимаем что Makefile был успешно сгенерирован. --enable-static --disable-shared говорит что нам нужно получить библиотеку
только для статической линковки.Мы же не хотим с собой ещё и разделяемые библиотеки таскать.
Теперь можно собрать:
После этого в папке .libs образуется файл libjpeg.a - это библиотека libjpeg для статической линковки.
8. Возвращаемся к сборке mjpg-streamer.
9. Теперь правим пути поиска библиотек и хидеров в plugins/input_uvc/Makefile
К переменной CFLAGS добавляем путь поиска хидеров -I../../libjpeg-turbo-1.1.90/
К переменной LDFLAGS добавляем путь поиска либ -L../../libjpeg-turbo-1.1.90/.libs
10. Собираем
11. Устанавливаем
12. Проверяем
Вуаля, отличный ARM-овый бинарник, работающий с glibc.