Jak mogę utworzyć pakiet .deb ze skompilowaną kompilacją OpenCV?


9

Skompilowanie OpenCV 2.4.2 na Raspberry Pi zajęło mi 6 godzin i chciałbym spakować wszystko jako deb, ale nigdy wcześniej tego nie robiłem. Jak spakować skompilowane pliki, aby pobierały lub zawierały niezbędne inne biblioteki?


Czy to jest bardziej pytanie specyficzne dla Linuksa niż pytanie związane z Pi? Może lepiej zapytać o to Debaina?

Cześć. Skoro jest to ogólny Debian, czy miałbyś coś przeciwko, gdybym przeniósł to na Ask Ubuntu lub Unix i Linux ?
Jivings

@Jivings Myślę, że jest to związane z PI, ponieważ nie wiem nic o hard float vs soft float i wiem, że istnieją pewne zastrzeżenia dotyczące Pi. Jeśli istnieje ogólna zgoda, że ​​ktoś może pomóc w odpowiedzi na to pytanie, nie mam problemu z przeniesieniem go

Odpowiedzi:


4

Jeśli przez OpenCV masz na myśli biblioteki wizji komputerowej pod adresem http://opencv.willowgarage.com/, to są one już spakowane do debiana przez Zespół Naukowy Debiana.

Najlepszym rozwiązaniem jest pobranie pakietu źródłowego debianizowanego z najbliższego serwera lustrzanego Debiana, zmodyfikowanie debian / rules i / lub Makefile lub skonfigurowanie itp. W razie potrzeby, aby poprawnie skompilować na Raspberry pi i odbudować pakiety.

Prace nad pakowaniem są już zakończone, nie trzeba tego robić ponownie ... i za każdym razem, gdy chcesz je zaktualizować.

Istnieje cała masa pakietów binarnych, ale libopencv-dev jest prawdopodobnie tym, co chcesz zacząć od http://packages.debian.org/search?ke words=libopencv-dev


Czy opublikowane pakiety będą działać na architekturze ARM, takiej jak Raspberry Pi? Chciałbym lepiej zrozumieć pakiety i zależności, ale wydaje mi się, że dopóki willowgarage nie wyda pakietu specjalnie dla procesora w Raspberry Pi, to ich pakiety nie będą działać.
Dan B

Musiałeś źle odczytać to, co napisałem. Powiedziałem, aby pobrać pakiety SOURCE Debiana i ponownie skompilować dla Raspberry Pi. „onlinemarketresults” ma już skonfigurowane środowisko do kompilacji RPi (lub kompilacji krzyżowej) i wie, jak skompilować dla RPi, po prostu chciał wiedzieć, jak zrobić pakiet.
cas

11

Pomyślałem, że dodam lepszą odpowiedź dla każdego, kto obserwuje ten wątek.

Jeśli więc masz już problem z budowaniem opencv na urządzeniu, prawdopodobnie postępowałeś zgodnie z instrukcjami tutaj:

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

W takim przypadku, jeśli nie dodasz -D argsdo dynamicznego przesłonięcia parametrów CMake w kroku drugim, a zamiast tego po prostu uruchomisz cmake ..wewnątrz katalogu kompilacji (utworzonego), wygeneruje CMakeCache.txtplik.

Jeśli edytujesz CMakeCache.txtplik, możesz zmienić:

CPACK_BINARY_DEB:BOOL=ON

... oprócz innych określonych zmiennych w powyższym linku opencv. Zamiast biegać makelub make install... po prostu biegać make packagei magia się dzieje.

Ostrzeżenie: jeśli masz, WITH_CUDA:BOOL=ONmożesz mieć problemy z zależnością od programu pakującego - i to jest zupełnie inne pytanie ...

Aby uzyskać więcej informacji, zobacz CPACK_*_*:BOOLparametry w plikach cmake i zapoznaj się z dokumentacją CPack:

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


W ten sposób powstaje kilka plików .deb, kilka plików tar i skrypt. Które z nich należy rozpowszechniać w systemie docelowym i uruchamiać? Wszystko? Czy potrzebują plików pomocniczych?
Alex

@Alex, zapomniałem o tym poście w zeszłym roku. Więc powinieneś mieć OpenCV-*-{libs,dev}.deb Potrzebujesz obu. Myślę, że dev ma nagłówki, których używa ld do łączenia z .so w libs. Możesz to również rozwiązać, uruchamiając dpkg -c OpenCV-*.debpakiet, aby wyświetlić zawartość. Ponadto, jeśli utworzyłeś to z source.tar, możesz nie mieć numeru wersji i dpkg -i $pkgnie spodoba ci się to. Możesz powiedzieć, czy to mówi OpenCV-unknown-*{dev,libs}.debW takim przypadku git clone github.com/Itseez/opencvi git checkout $tagna karcie wydań. Jeśli budujesz z góry drzewa, dostajesz także tag na deb.
hhony

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.