Как я могу создать пакет .deb с моей скомпилированной сборкой OpenCV?

9

OpenCV 2.4.2 потребовалось 6 часов для компиляции на Raspberry Pi, и я бы хотел собрать все как деб, но я никогда не делал этого раньше. Как я могу упаковать скомпилированные файлы так, чтобы они загружали или включали необходимые другие библиотеки?

timelf123
источник
Это больше специфический вопрос для Linux, чем вопрос, связанный с Pi? Может быть, лучше спросить об этом на Debain?
Всем привет. Поскольку это стандартный Debian, вы не возражаете, если я перенес это в Ask Ubuntu или Unix & Linux ?
Jivings
@Jivings Я думаю, что это связано с PI, так как я ничего не знаю о жестком плавании против мягкого плавания, и я знаю, что есть предостережения с Пи по этому поводу. Если есть общее мнение, что кто-то там может помочь ответить на этот вопрос, у меня нет проблем с его перемещением

Ответы:

4

Если под OpenCV вы имеете в виду библиотеки компьютерного зрения по адресу http://opencv.willowgarage.com/, то они уже упакованы для Debian научной командой Debian.

Лучше всего загружать исходный пакет debianised с ближайшего зеркала Debian, изменять debian / rules и / или Makefile, либо настраивать и т. Д., Если это необходимо для правильной компиляции на raspberry pi и перекомпоновки пакетов.

Работа по упаковке уже завершена, нет необходимости делать это снова .... и снова и снова каждый раз, когда вы хотите обновить их.

Существует целая куча бинарных пакетов, но libopencv-dev - это, вероятно, то, что вы хотите начать с http://packages.debian.org/search?keywords=libopencv-dev

саз
источник
Будут ли опубликованные пакеты работать на архитектуре ARM, такой как Raspberry Pi? Хотелось бы, чтобы я лучше понимал пакеты и зависимости, но мне кажется, что если willowgarage не выпустит пакет специально для процессора в Raspberry Pi, то их пакеты не будут работать.
Дэн Б
Вы, должно быть, неправильно поняли то, что я написал. Я сказал скачать пакеты Debian SOURCE и перекомпилировать для Raspberry Pi. 'onlinemarketresults' уже настроили среду компиляции (или кросс-компиляции) RPi и знают, как компилировать для RPi, он просто хотел знать, как создать пакет.
Cas
11

Я думал, что добавлю лучший ответ для всех, кто наблюдает за этой веткой.

Итак, если вы уже столкнулись с проблемой сборки opencv на устройстве, вы, вероятно, выполнили следующие инструкции:

http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html

В этом случае, если вы не добавите -D argsдинамическое переопределение параметров CMake на втором шаге, а вместо этого просто запустите cmake ..внутри каталога сборки (который вы создали), он сгенерирует CMakeCache.txtфайл.

Если вы редактируете CMakeCache.txtфайл, вы можете изменить:

CPACK_BINARY_DEB:BOOL=ON

... в дополнение к другим указанным переменным в приведенной выше ссылке opencv. Вместо бега makeили make install... просто беги make packageи волшебство случается.

Предупреждение: если у вас есть, у WITH_CUDA:BOOL=ONвас могут быть проблемы с зависимостью от упаковщика - и это совершенно другой вопрос ...

Для получения дополнительной информации смотрите CPACK_*_*:BOOLпараметры в файлах cmake и обратитесь к документации CPack:

http://www.cmake.org/Wiki/CMake:CPackPackageGenerators

hhony
источник
Это создает пару файлов .deb, пару файлов tar и скрипт. Какие из них необходимо распространять и запускать в целевой системе? Все? Им нужны какие-нибудь вспомогательные файлы?
Алекс
@ Алекс, забыл об этом посте в прошлом году. Таким образом, вы должны иметь, OpenCV-*-{libs,dev}.deb Вы должны оба. Я думаю, что у dev есть заголовки, которые ld использует для связи с .so в библиотеках. Вы также можете выяснить это, запустив dpkg -c OpenCV-*.debпакет, чтобы получить список содержимого. Кроме того, если вы создали это из source.tar, у вас может не быть номера версии, и вам dpkg -i $pkgэто не понравится. Вы можете сказать, если он говорит OpenCV-unknown-*{dev,libs}.debВ каком случае git clone github.com/Itseez/opencvи git checkout $tagна вкладке релизов. Если вы строите с вершины дерева, вы также получаете метку на deb.
hhony