Как выбирать в линухе нужную версию либы?
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
В линухе установлен matlab. Он с собой тянет opencv 2.4.
Я ручками собрал и установил OpenCV 3.2 (make, make install).
Один добрый человек сделал биндинг к матлабу mexopencv.
Это я тоже собрал. И почти работает, но столкнулся со следующей проблемой:
в точности ее описание здесь есть github.com/...magu/mexopencv/issues/195 (это не от меня а от кого-то другого, неважно).
Кратко, в матлабе всегда подтягиваются версии opencv 2.4, а не 3.2, как мне надо.
Точнее мне нужно, чтобы сам матлаб мог использовать opencv 2.4 там, где ему нужно, а мои скрипты, что используют биндинги использовали 3.2.
Вот там ответ собственно автора mexopencv:
kyamagu commented on Oct 9, 2015
@chenfisher I think the best solution in this scenario is to use the v2.4 branch of mexopencv and link against Matlab’s own shared object in the build script. I have never tried that, but probably you cannot load two versions at the same time. Static linking could remedy some issue, but that will require huge amount of dependent libs linked to OpenCV.
Т.е. он видит решение в статической линковке, но сам с этим возиться не хочет. И матлаб использует mex для компиляции и линковке, который внутри уже дергает настроенный компилятор и предпочитает so вариант (то есть прмого и явного пути для статической линковки не предлагается).
В Винде такой проблемы нет, потому как версия OpenCV есть в имени файла dll и все прекрасно разруливается само. Главное, чтобы путь в переменной PATH был прописан.
Вопрос, как разруливают такие ситуации в Линуксе?
И второй вопрос:
Как в линуксе явно заставить прилиноквать статические либы?
pkg-config —static —libs opencv возвращает ровно тоже, что и pkg-config —libs opencv
63 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів