繁体   English   中英

使用Qt pcl和vtk链接错误

[英]Linking errors with qt pcl and vtk

我正在尝试编译此处描述的PCL教程并且遇到了这些链接错误。

链接CXX可执行文件pcl_visualizer usr / lib / libpq.so.5:对SSL_get_peer_certificate@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to未定义引用SSL_get_peer_certificate@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFReadDirectory@LIBTIFF_4.0'的SSL_get_peer_certificate@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libpq。 so.5:对CRYPTO_num_locks@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to未定义引用CRYPTO_num_locks@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference toCRYPTO_num_locks@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to usr / lib / libvtkIO.so.5.8.0:对TIFFIsTiled@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to未定义引用TIFFIsTiled@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to SSL_use_certificate_file@OPENSSL_1.0.0' usr / lib中/ libpq.so.5:未定义参照ENGINE_free@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to OPENSSL_config@OPENSSL_1.0.0'的ENGINE_free@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to usr / lib / libpq.so.5:对SSL_get_error@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to未定义引用SSL_get_error@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to SSL_use_PrivateKey_file@OPENSSL_1.0.0'的SSL_get_error@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to lib / libpq.so.5:对X509_STORE_load_locations@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to未定义引用X509_STORE_load_locations@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFDefaultStripSize@LIBTIFF_4.0'的X509_STORE_load_locations@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to /libvtkIO.so.5.8.0:未定义对TIFFReadTile@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to引用TIFFReadTile@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to SSL_set_ex_data@OPENSSL_1.0.0的TIFFReadTile@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to usr / lib / libvtkIO.so.5.8.0:未定义参考TIFFWriteScanline@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to _TIFFfree@LIBTIFF_4.0'usr / lib / libpq.so.5:未定义参考SSL_read@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFGetField@LIBTIFF_4.0'的SSL_read@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libvtkIO.so.5.8.0:未定义对TIFFScanlineSize@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to引用: TIFFScanlineSize@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to X509_STORE_set_flags@OPENSSL_1.0.0的引用:usr / lib / libpq.so.5:对SSLv23_method@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to未定义引用SSLv23_method@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to ENGINE_load_private_key@OPENSSL_1.0.0的SSLv23_method@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to /libpq.so.5:未定义的对X509_get_subject_name@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to引用X509_get_subject_name@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to CRYPTO_set_id_callback@OPENSSL_1.0.0'的usr / lib / libvtkIO.so.5.8.0:未定义的引用TIFFClose@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFClose@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFClientOpen@LIBTIFF_4.0'的TIFFClose@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libpq.so.5: TIFFClose@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to SSL_CTX_new@OPENSSL_1.0.0的TIFFClose@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libpq.so.5: TIFFClose@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to SSL_CTX_get_cert_store的SSL_CTX_new@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to @ OPENSSL_1.0.0'usr / lib / libpq.so.5:对SSL_check_private_key@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to未定义引用: SSL_check_private_key@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFGetFieldDefaulted@LIBTIFF_4.0'的SSL_check_private_key@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libpq .so.5:对ENGINE_by_id@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to未定义引用ENGINE_by_id@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFNumberOfDirectories@LIBTIFF_4.0'的ENGINE_by_id@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libpq.so.5:对ERR_get_error@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to未定义引用ERR_get_error@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to CRYPTO_set_locking_callback@OPENSSL_1.0.0的ERR_get_error@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to 。usr / lib / libpq.so.5:对SSL_load_error_strings@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to未定义引用SSL_load_error_strings@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to SSL_new@OPENSSL_1.0.0'的SSL_load_error_strings@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to usr / lib / libpq.so.5:对X509_NAME_get_text_by_NID@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to未定义引用X509_NAME_get_text_by_NID@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFOpen@LIBTIFF_4.0的X509_NAME_get_text_by_NID@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libpq.so.5:对SSL_write@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to未定义引用SSL_write@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to X509_free@OPENSSL_1.0.0'的SSL_write@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to usr / lib / libpq.so.5:未定义的引用到SSL_CTX_load_verify_locations@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFReadRGBAImage@LIBTIFF_4.0'的SSL_CTX_load_verify_locations@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libpq.so.5:对SSL_free@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to未定义引用SSL_free@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to SSL_ctrl@OPENSSL_1.0.0'的SSL_free@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to usr / lib / libvtkIO.so.5.8.0:未定义对TIFFSetField@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to SSL_set_verify@OPENSSL_1.0.0'usr / lib / libpq.so.5:对ENGINE_init@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to未定义引用ENGINE_init@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to SSL_set_fd@OPENSSL_1.0.0'的ENGINE_init@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to usr / lib / libpq。 so.5的:未定义参照SSL_connect@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to ERR_reason_error_string@OPENSSL_1.0.0' usr / lib中/ libpq.so.5:未定义参照SSL_CTX_ctrl@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to SSL_pen的SSL_CTX_ctrl@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to ding@OPENSSL_1.0.0'usr / lib / libpq.so.5:未定义引用SSL_use_PrivateKey@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFSetWarningHandler@LIBTIFF_4.0'usr / lib / libpq.so.5:对ENGINE_finish@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to未定义引用ENGINE_finish@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFSetErrorHandler@LIBTIFF_4.0'的ENGINE_finish@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libvtkIO.so.5.8.0:未定义的引用到_TIFFmalloc@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to SSL_library_init@OPENSSL_1.0.0的_TIFFmalloc@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to usr / lib / libvtkIO.so.5.8.0:对TIFFSetDirectory@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to未定义引用TIFFSetDirectory@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFReadScanline@LIBTIFF_4.0'的TIFFSetDirectory@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to usr / lib / libpq.so.5:未定义对SSL_shutdown@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to引用SSL_shutdown@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TIFFNumberOfTiles@LIBTIFF_4.0'collect2:错误:ld返回1退出状态make [2]: * [pcl_visualizer]错误1 make 1 :* [CMakeFiles / pcl_visualizer.dir / all]错误2 make:*** [全部]错误2

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})

CMakeList文件中缺少任何内容吗?

您要链接的PostgreSQL库缺少openssl,您可以使用以下命令进行检查

ldd /usr/lib/libpq.so.5

它应该报告类似

libssl.so.1.0.0 => not found

与vtk相同,但是找不到有效的TIFF库。

首先,检查您是否同时安装了openssl和tiff库,如果链接仍然失败,请检查版本是否正确。

其次,如果所有库都已安装,请检查是否来自正确的体系结构(全部32位或全部64位)。

三,手动强制项目加载库的标志(包括命令行CMAKE_MODULE_LINKER_FLAGS / CMAKE_SHARED_LINKER_FLAGStarget_link_libraries指令)。

如评论中所述,anaconda是问题所在。

将您的anaconda文件夹重命名为anaconda-temp,以便您的路径变量中的链接在扫描期间对于cmake不正确。 然后安装qt5-default使用sudo apt-get install qt5-default为我的情况下解决了这两个错误。 然后重新运行cmake ,现在它应该在正确的位置(即不在anaconda路径中)检测到qt5。

现在运行make,最后可以将anaconda-temp重命名为anaconda,使其与您的路径和bashrc中的值相对应,并且照常营业。

为了解决TIFF 4.0的问题,您可以尝试

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

对我来说,您应该从系统路径中删除ananconda3。 对我来说,我只是将它从〜/ .bashrc文件中删除。 而且一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM