2016-11-28 2 views
0

Я успешно скомпилировал opencv 3.1 на малине pi. Разработка с библиотекой работает отлично. Теперь я хотел создать другую, идентичную малину с opencv и сохранить время компиляции, моя идея состояла в том, чтобы скопировать двоичные файлы во вторую малину.Клон скомпилирован cmake build to same hardware

Итак, я скопировал каталоги opencv, включая папку сборки, и попытался запустить sudo make install. Вместо использования уже скомпилированных файлов компиляция с использованием cmake начинается снова.

Как я могу убедить вторую среду обитания малины, что нет необходимости перекомпилировать все? На моей оригинальной малине я могу запустить sudo make install на точно такие же файлы без перекомпиляции. Установленные dev-библиотеки в обеих системах одинаковы. Является ли это проблемой cmake, make или opencv?

Я также пытался скопировать все файлы .so и .h из каталога /usr/..., но затем я столкнулся с дополнительными проблемами, когда другие проекты cmake пытаются найти пакет opencv.

ответ

3

Сайт сборки не предназначен для копирования в другое место или на другом компьютере.

Для доставки программы на другую машину вы должны использовать установленные файлы, или, более общо, пакет.

CMake поставляется с CPack, который может строить программу из источников и создавать пакет содержит все свои результаты.

Вы можете создать .deb пакет на первой Малина PI машины:

cpack -G DEB <source-dir> 

и установить его на второй машине, используя dpkg.

Существуют также «архивные» пакеты, такие как .tgz или .zip. Полный список генераторов CPack описан в wiki.

+0

Спасибо, это было то, что мне нужно! Запуск cpack с опцией DEB завершился неудачно со странным сообщением об ошибке, поэтому я использовал '-G TGZ' и распаковал архив на втором компьютере. Сообщение об ошибке cpack (для полноты): 'Ошибка CMake в /usr/share/cmake-3.0/Modules/CPackDeb.cmake:294 (строка): строковая подкоманда REGEX, режим REPLACE требуется в не более 6 аргументов в команду. – pafodie