Связывание ошибок с qt pcl и vtk

Я пытаюсь скомпилировать учебник PCL, описанный здесь, и сталкиваюсь с этими ошибками связывания.

Файл CmakeList определяется следующим образом:

Чего-то не хватает в файле CMakeList?

cmake_minimum_required (VERSION 2.6 FATAL_ERROR)

project      (pcl-visualizer)
find_package (Qt4 REQUIRED)
find_package (VTK REQUIRED)
find_package (PCL 1.7.1 REQUIRED)

include_directories (${PCL_INCLUDE_DIRS})
link_directories    (${PCL_LIBRARY_DIRS})
add_definitions     (${PCL_DEFINITIONS})

set  (project_SOURCES main.cpp pclviewer.cpp)
set  (project_HEADERS pclviewer.h)
set  (project_FORMS   pclviewer.ui)
set  (VTK_LIBRARIES   vtkRendering vtkGraphics vtkHybrid QVTK)

QT4_WRAP_CPP (project_HEADERS_MOC   ${project_HEADERS})
QT4_WRAP_UI  (project_FORMS_HEADERS ${project_FORMS})

INCLUDE         (${QT_USE_FILE})
ADD_DEFINITIONS (${QT_DEFINITIONS})

ADD_EXECUTABLE  (pcl_visualizer ${project_SOURCES}
                                ${project_FORMS_HEADERS}
                                ${project_HEADERS_MOC})

TARGET_LINK_LIBRARIES (pcl_visualizer ${QT_LIBRARIES} ${PCL_LIBRARIES} ${VTK_LIBRARIES})

В библиотеке PostgreSQL, на которую вы ссылаетесь, отсутствует openssl, вы можете проверить это с помощью


person R.Falque    schedule 14.02.2016    source источник


Ответы (4)


он должен сообщить что-то вроде

ldd /usr/lib/libpq.so.5

То же самое с vtk, но он не находит допустимую библиотеку TIFF.

libssl.so.1.0.0 => not found

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

Во-вторых, если все библиотеки установлены, проверьте, относятся ли они к правильной архитектуре (все 32-разрядные или все 64-разрядные).

В-третьих, вручную заставьте ваш проект загружать флаги библиотек (как из командной строки CMAKE_MODULE_LINKER_FLAGS/CMAKE_SHARED_LINKER_FLAGS, так и в директиве target_link_libraries).

Как упоминалось в комментариях, проблема в анаконде.

person gengisdave    schedule 14.02.2016
comment
Проблема была из-за Анаконды. Это была первая найденная версия Qt, я подозреваю, что моя установка Anaconda была 32-битной, а остальные - 64-битной. - person R.Falque; 15.02.2016
comment
Это была моя вторая мысль, это могло случиться, когда смешаны 32 и 64 библиотеки. - person R.Falque; 15.02.2016
comment
Эй, у меня та же проблема: я обнаружил, что у меня есть и другие версии libssl. Как вы это решили? - person gengisdave; 15.02.2016
comment
Связывание исполняемого файла CXX pcl_visualizer usr/lib/libpq.so.5: неопределенная ссылка на _1_TIFFReadDirectory@LIBTIFF_4.0' usr/lib/libpq.so.5: неопределенная ссылка на _2_SSL_CTX_use_certificate_chain_file@OPENSSL_1.0.0' usr/lib/libvtkIO.so. 5.8.0: неопределенная ссылка на _3_SSL_use_certificate_file@OPENSSL_1.0.0' usr/lib/libpq.so.5: неопределенная ссылка на _4_OPENSSL_config@OPENSSL_1.0.0' usr/lib/libpq.so.5: неопределенная ссылка на _5_SSL_use_PrivateKey_file@OPENSSL_1.0.0 ' usr/lib/libpq.so.5: неопределенная ссылка на _6_TIFFDefaultStripSize@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: неопределенная ссылка на _7_SSL_set_ex_data@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8 .0: неопределенная ссылка на _8__TIFFfree@LIBTIFF_4.0' usr/lib/libpq.so.5: неопределенная ссылка на _9_TIFFGetField@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: неопределенная ссылка на _10_X509_STORE_set_flags@OPENSSL_1. 0.0' usr/lib/libpq.so.5: неопределенная ссылка на _11_ENGINE_load_private_key@OPENSSL_1.0.0' usr/lib/libpq.so. 5: неопределенная ссылка на _12_CRYPTO_set_id_callback@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: неопределенная ссылка на _13_TIFFClientOpen@LIBTIFF_4.0' usr/lib/libpq.so.5: неопределенная ссылка на _14_SSL_CTX_get_cert_store@OPENSSL_1.0.0 ' usr/lib/libpq.so.5: неопределенная ссылка на _15_TIFFGetFieldDefaulted@LIBTIFF_4.0' usr/lib/libpq.so.5: неопределенная ссылка на _16_TIFFNumberOfDirectories@LIBTIFF_4.0' usr/lib/libpq.so.5: не определено ссылка на _17_CRYPTO_set_locking_callback@OPENSSL_1.0.0' usr/lib/libpq.so.5: неопределенная ссылка на _18_SSL_new@OPENSSL_1.0.0' usr/lib/libpq.so.5: неопределенная ссылка на _19_TIFFOpen@LIBTIFF_4.0' usr/lib/ libpq.so.5: неопределенная ссылка на _20_X509_free@OPENSSL_1.0.0' usr/lib/libpq.so.5: неопределенная ссылка на _21_TIFFReadRGBAImage@LIBTIFF_4.0' usr/lib/libpq.so.5: неопределенная ссылка на _22_SSL_ctrl@OPENSSL_1 .0.0' usr/lib/libvtkIO.so.5.8.0: неопределенная ссылка на _23_SSL_set_verify@OPENSSL_1.0.0' usr/lib/libpq.so.5: неопределенная r ссылка на _24_SSL_set_fd@OPENSSL_1.0.0' usr/lib/libpq.so.5: неопределенная ссылка на _25_ERR_reason_error_string@OPENSSL_1.0.0' usr/lib/libpq.so.5: неопределенная ссылка на _26_SSL_pending@OPENSSL_1.0.0' usr/lib/ libpq.so.5: неопределенная ссылка на _27_TIFFSetWarningHandler@LIBTIFF_4.0' usr/lib/libpq.so.5: неопределенная ссылка на _28_TIFFSetErrorHandler@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: неопределенная ссылка на _29_SSL_library_init @OPENSSL_1.0.0' usr/lib/libvtkIO.so. 5.8.0: неопределенная ссылка на _30_TIFFReadScanline@LIBTIFF_4.0' usr/lib/libpq.so.5: неопределенная ссылка на _31_TIFFNumberOfTiles@LIBTIFF_4.0' collect2: error: ld вернул 1 статус выхода make[2]: * [pcl_visualizer] Ошибка 1 /all] Ошибка 2 make: *** [all] Ошибка 2 - person TobSta; 03.11.2016

Переименуйте папку anaconda в anaconda-temp, чтобы ссылка в вашей переменной пути была неверной для cmake во время сканирования. Затем установите qt5-default, используя sudo apt-get install qt5-default, так как это решило обе ошибки в моем случае. Затем повторно запустите cmake, и теперь он должен обнаружить qt5 в правильном месте (то есть не в пути к анаконде).

Теперь запустите make и, наконец, вы можете переименовать anaconda-temp в anaconda, чтобы он соответствовал вашему пути и значению в bashrc, и все работает как обычно.

Для решения проблемы с TIFF 4.0 вы можете попробовать

person Johann    schedule 04.06.2017

У меня работает то, что вы должны удалить ananconda3 из системного пути. Я просто удаляю его из файла ~/.bashrc. И все работает нормально.

cd $HOME/Downloads
wget http://old-releases.ubuntu.com/ubuntu/pool/universe/t/tiff3/libtiff4_3.9.7-2ubuntu1_amd64.deb
sudo dpkg -i libtiff4_3.9.7-2ubuntu1_amd64.deb 
sudo ldconfig
person MPękalski    schedule 28.07.2017

Когда я перечисляю зависимости для libpq.so, он возвращает это для libssl _1_. Я собираюсь проверить, есть ли проблема с версией. Спасибо за вашу помощь!

person 登盛陈    schedule 22.10.2018