Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!
250 ₴

Build standalone OpenCV library for Linux (C++)

истекло время актуальности


Господа! Делал я себе лабораторные по распознаванию образов на следующий год, чтоб значит все экстерном закрыть, и тут возникла проблема. Заключается она в том, что лабораторную надо показывать на компе препода и она должна быть выполнена под 64-битный Linux. Это означает, что программу надо скомпилировать под Release, чтобы можно было легко перенести на чистый комп без передустановки opencv на нем. Это предполагает использование static библиотек (маздай - dll, линух - a). Я использовал 3.4.5 сборку opencv и на винде все было хорошо: кинул рядом с прогой opencv_world345 - и все в ажуре, можно свободно кидать прогу с этой dll-кой на любой чистый виндовый комп - все работает. А вот в линухе все пошло под откос. Готовой сборки opencv под него нет. Я сначала просто собрал opencv по этому примеру (https://techcave.ru/posts/43-ustanovka-opencv-na-ubuntu-ili-debian.html , да, я на дебиан 9 работаю), и программа успешна скомпилилась и работает, но работает с shared библиотеками и при переносе на чужой комп требует их. Попытка скомпилить со static библиотеками ничего не дала - программа просто нескомпилилась, ощетинившись кучей undefined reference errors на функции и методы opencv. Возникла мысль: а почему просто не сделать opencv_world на линухе - и дело в шляпе. Но окончилось дело медным тазом, т. к. при попытке подключиться к opencv_world (что .so, что .a, что в /usr/local/lib, что в кастомной директории) приводит только к undefined reference. Полагаю, что проблема в неправильной сборке - что-то пропустил. 3 дня экспериментов и заплывов по форумам ничего не дало: либо это какое-то ценное таинство, либо народ не сталкивался с моей проблемой (что врядли).

Так вот, задача - обучить этому сильному колдунству, чтобы иметь возможность запускать прогу на чистом линухе (дебиан/убунту/пр.). Интересует алгоритм действий для личного воспроизведения, если такой вообще возможен.

Уже самому интересно разобраться.



Обновление #1 от 11 августа 2019
Интересуют люди, уже компилировавшие приложения с линковкой сторонних библиотек на Линухе при помощи gcc/g++ под Линух так, чтобы на сторонней машине можно было запустить приложение просто скопирывыв файлы, ничего на ней не разворачивая (не устанавливая).


  1. 1 день250 ₴
    Мира
    Мира Странная
    1329     32  0

    Могу помочь разобраться, использую Arch Linux на своём десктопе.

    Армения Yerevan | 11 августа 2019 |
  2. 3 дня400 ₴
    Олег
    Олег Пивоваров
    166   

    Здравствуйте, у меня уже есть виртуалка Debian 9.2
    Есть немалый опыт сборки библиотек под Linux.
    Цену и срок выполнения назвать не могу, как и результат.
    Для начала мне нужно будет узнать, что вы уже попробовали и посмотреть на сам проект.
    Тут нужно сначала много чего почитать.

    Цену будем формировать по следующей схеме:
    Я читаю документацию к компилятору и библиотеке, делаю работу, отчитываюсь за день, делаю выводы вместе с вами, устанавливаю цену за работу на сегодня. Могу согласиться на ваши условия формирования стоимости работы.

    В плохом случае. как только вам станет это не выгодно, или мне станет очевидно что задачу реализовать нельзя - мы прерываем с вами сотрудничество, но у вас будут новые знания о том, как собирать библиотеки.

    Но всё же, я думаю, что задача вполне решаема. Я гарантирую вам полную прозрачность и честность.

    Skype: https://join.skype.com/invite/nkibnoXVxMCe
    Telegram: https://t.me/fivaproldj

    Россия Нижний Новгород | 9 августа 2019 |
  3. 2 дня270 ₴
    Александр
    Александр Питкин
    111     1  0

    Здравствуйте было бы интересно разобраться с этой проблемой. Есть маленький опыт работы с opencv в том числе сборкой

    Беларусь Беларусь | 11 августа 2019 |
  4.  фрилансер больше не работает на сервисе
  • Мира Странная
    9 августа 2019 |

    В линуксе также можно ставить .so файлы рядом с исполняемым, как и в Windows .dll файлы)

  • Oleksandr Vishnyak — заказчик проекта
    9 августа 2019 |

    Хм, попробую...

  • Oleksandr Vishnyak — заказчик проекта
    9 августа 2019 |

    Дохлый номер. Копирывал всю папку /usr/local/lib рядом с прогой, в папку рядом с прогой. Причем и компилил с линковкой на библиотеки рядом с прогой: ./ и ../lib - у меня работает, на чистом - cannot find opencv_world.so.3.4

  • Oleksandr Vishnyak — заказчик проекта
    9 августа 2019 |

    Может неверно линковал? Если есть мысли, можете сделать ставку.

  • Александр Ш.
    9 августа 2019 |

    Ок, а если с ключом

     -D BUILD_opencv_world=OFF

  • Александр Ш.
    9 августа 2019 |

    Привет!

    Каким именно компилером собираешь?

    Флаг

    -DBUILD_SHARED_LIBS=OFF

    пытался ставить при сборке, как я понимаю?

  • Oleksandr Vishnyak — заказчик проекта
    9 августа 2019 |

    gcc, да я компилил таким образом статичные либы, но при попытке подключать кокретно их выпадают ошибки