Ссылка OpenCV 4.1.0, включает в себя работает, libs нет - PullRequest
1 голос
/ 19 марта 2019

После изменения Ubuntu с 16.04 на 18.04 и OpenCV с 3.4.1 на 4.1.0 я не могу скомпилировать ... ничего

Шаг за шагом:

Я загрузил исходный код сgithub, установите эти флаги:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules cmake -DENABLE_PRECOMPILED_HEADERS=OFF -DBUILD_opencv_cudacodec=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_CUDA=ON -D WITH_TBB=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_QT=OFF -D BUILD_SHARED_LIBS=OFF ..

скомпилировал и установил

Затем я создал простую программу:

#include "opencv2/highgui.hpp"
#include <opencv2/imgproc.hpp>
#include <iostream> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    cout << "V: " << CV_VERSION << endl;
    return 0; 
}

Скомпилировал ее с помощью этой команды:

g++ -std=c++11 main.cpp `pkg-config --libs --cflags opencv4` -g -o main

и получите работающий исполняемый файл main:

V: 4.1.0-pre

Но когда я добавил одну строку с Mat

#include "opencv2/highgui.hpp"
#include <opencv2/imgproc.hpp>
#include <iostream> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    cout << "V: " << CV_VERSION << endl;
    Mat frame;
    return 0; 
}

, я получил больше ошибок, чем мой терминал может отобразить

Полагаю, что такие файлы, как libopencv_core.a, не связывают

Этот метод связывания библиотек всегда работал для меня, я не знаю, где искать ошибки

Любые подсказки,совет?

Редактировать:

Вот начало моей ошибки (полная ошибка содержит +4500 строк, при необходимости я могу добавить .txt с полной ошибкой)

/usr/local/lib/libopencv_core.a(system.cpp.o): In function `cv::ipp::getIPPSingleton()':
system.cpp:(.text._ZN2cv3ippL15getIPPSingletonEv+0xdb): undefined reference to `ippicvGetCpuFeatures'
system.cpp:(.text._ZN2cv3ippL15getIPPSingletonEv+0x16e): undefined reference to `ippicvSetCpuFeatures'
system.cpp:(.text._ZN2cv3ippL15getIPPSingletonEv+0x173): undefined reference to `ippicvGetEnabledCpuFeatures'
system.cpp:(.text._ZN2cv3ippL15getIPPSingletonEv+0x1ba): undefined reference to `ippicviGetLibVersion'
system.cpp:(.text._ZN2cv3ippL15getIPPSingletonEv+0x263): undefined reference to `pthread_mutexattr_init'
system.cpp:(.text._ZN2cv3ippL15getIPPSingletonEv+0x270): undefined reference to `pthread_mutexattr_settype'
system.cpp:(.text._ZN2cv3ippL15getIPPSingletonEv+0x283): undefined reference to `pthread_mutexattr_destroy'
system.cpp:(.text._ZN2cv3ippL15getIPPSingletonEv+0x2a1): undefined reference to `ippicvInit'
/usr/local/lib/libopencv_core.a(system.cpp.o): In function `cv::getInitializationMutex()':
system.cpp:(.text._ZN2cv22getInitializationMutexEv+0x63): undefined reference to `pthread_mutexattr_init'
system.cpp:(.text._ZN2cv22getInitializationMutexEv+0x70): undefined reference to `pthread_mutexattr_settype'
system.cpp:(.text._ZN2cv22getInitializationMutexEv+0x83): undefined reference to `pthread_mutexattr_destroy'

Ответы [ 3 ]

1 голос
/ 20 марта 2019

У меня такая же проблема.Это решает после создания

sudo ldconfig

из той же папки, что я запустил установку.

1 голос
/ 22 марта 2019

Наконец-то нашел решение, виноват этот флаг: -D BUILD_SHARED_LIBS=OFF, после удаления все нормально заработало

1 голос
/ 19 марта 2019

Я бы запустил pkg-config --libs --cflags opencv4 в bash и проверил, верны ли параметры компоновщика и существуют ли пути / библиотеки.make install должен указать вам, куда скопированы библиотеки (/usr/local/lib или что-то в этом роде).Если #include работает, включаемые каталоги обычно установлены правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...