Запуск скомпилированной программы на другой ubuntu?

Добрый день. Скомпилировал программу в qt creator с использованием либ opencv.
Скопировал на другой компьютер папку релиза, выдает ошибку в отстувии библиотек, скопировал в эту папку необходимые либы, всё равно ошибка, скопировал в /usr/local/lib та же хрень.
Так же делал sudo ldconfig - v.

Привык что в винде при переносе можно все dll просто в папку с exe закинуть и всё работает, а здесь какая-то засада.
Не буду же я компилить opencv на каждой машине где прогу запустят?
  • Вопрос задан
  • 1936 просмотров
Пригласить эксперта
Ответы на вопрос 7
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
В первую очередь забудьте пожалуйста вот это -
что в винде
. Что было в винде, то осталось в винде. В линухе другой подход. Здесь не будут автоматом грузиться левые либы.
1. Проверьте, что в /etc/ld.so.conf.d есть файлик (имя любое), содержащий строку:
/usr/local/lib
Если не было, создайте и уже потом ldconfig. Проверить, что нужные либы система увидела, можно через ldconfig -p
2. Если используется opencv, то на целевой машине должен стоять OpenCV - а Вы думаете, менеджеры пакетов, которые автоматически разрешают и ставят зависимости - просто так придумали, от скуки?
3. Вы еще и автоматически детектить его должны через configure и ошибку выдавать вменяемую, что OpenCV не обнаружен - это если программа будет только в сырцах распространяться. А если пакетами - то ее поставит соответствующий пакетный менеджер, для чего ему должны быть конечно выданы указания :)
Ответ написан
Sanes
@Sanes
В Ubuntu для таких задач придумали Snappy
Ответ написан
Комментировать
@rPman
Для начала, примите как данность, в linux бинарник - не приложение, приложение - это запись в пакетном менеджере, с настроенными зависимостями.

Вам необходимо кропотливо записать в зависимостях все необходимые библиотеки, скомпилировать с помощью кросскомпиляции, приложение под сразу несколько популярных платформ (i686/x86_64/может быть несколько arm), собрать deb/rpm пакеты, как минимум для нескольких популярных версий операционки (+для эстетов - ebuild) и вот только тогда считать что вы перенесли приложение на другой комп, иначе это геморой конечным пользователям.
p.s. вы как разработчик сможете это сделать без особых проблем, так как ЗНАЕТЕ из чего ваше приложение состоит и чем пользуется.
и да, тестировать все это на собранном минимальном debootstrap образе системы
Ответ написан
Комментировать
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Или линкуй статически или собирай пакет, который подтянет либы
Ответ написан
Комментировать
Zifix
@Zifix Куратор тега Qt
Barbatum
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы