将错误与qt pcl和vtk

时间:2016-02-14 15:02:59

标签: qt linker cmake vtk printer-control-language

我正在尝试编译here所描述的PCL教程,我正面临这些链接错误。

  

链接CXX可执行文件pcl_visualizer usr / lib / libpq.so.5:undefined   对SSL_get_peer_certificate@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to {{{{{{{{{{{{{{{{{{{{{{{{{{   参考{{1} }SSL_CTX_use_certificate_chain_file@OPENSSL_1.0.0'   usr / lib / libvtkIO.so.5.8.0:未定义的引用   {{1} }SSL_use_certificate_file@OPENSSL_1.0.0'usr / lib / libpq.so.5:undefined   参考{{1 }}OPENSSL_config@OPENSSL_1.0.0'usr / lib / libpq.so.5:   对CRYPTO_num_locks@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to SSL_use_PrivateKey_file@OPENSSL_1.0.0'usr / lib / libpq.so.5的未定义引用:undefined   对TIFFIsTiled@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{   对{{1} }SSL_set_ex_data@OPENSSL_1.0.0'的未定义引用   usr / lib / libvtkIO.so.5.8.0:未定义的引用   ENGINE_free@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to _TIFFfree@LIBTIFF_4.0'usr / lib / libpq.so.5:undefined   引用SSL_get_error@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to TAFFGetField@LIBTIFF_4.0'   usr / lib / libvtkIO.so.5.8.0:未定义的引用   X509_STORE_load_locations@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to X509_STORE_set_flags@OPENSSL_1.0.0'usr / lib / libpq.so.5:undefined   参考TIFFReadTile@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference toENGINE_load_private_key@OPENSSL_1.0.0'   usr / lib / libpq.so.5:未定义的引用   TIFFWriteScanline@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference toCRYPTO_set_id_callback@OPENSSL_1.0.0'   usr / lib / libvtkIO.so.5.8.0:未定义的引用   {{1 }}TIFFClientOpen@LIBTIFF_4.0'usr / lib / libpq.so.5:undefined   参考{{1} }SSL_CTX_get_cert_store@OPENSSL_1.0.0'   usr / lib / libpq.so.5:未定义的引用   SSL_read@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference toTIFFGetFieldDefaulted@LIBTIFF_4.0'   usr / lib / libpq.so.5:未定义的引用   TIFFScanlineSize@LIBTIFF_4.0' usr/lib/libpq.so.5: undefined reference to TAFFNumberOfDirectories@LIBTIFF_4.0'usr / lib / libpq.so.5:   对SSLv23_method@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to CORYPTO_set_locking_callback@OPENSSL_1.0.0'usr / lib / libpq.so.5的未定义引用:   未定义引用X509_get_subject_name@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference toSSL_new@OPENSSL_1.0.0'   usr / lib / libpq.so.5:未定义的引用   TIFFClose@LIBTIFF_4.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TAFFOpen@LIBTIFF_4.0'usr / lib / libpq.so.5:   对SSL_CTX_new@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to X509_free@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 TAFFReadRGBAImage@LIBTIFF_4.0'usr / lib / libpq.so.5:undefined   参考{{1} }SSL_ctrl@OPENSSL_1.0.0'usr / lib / libvtkIO.so.5.8.0:   对{{1} }SSL_set_verify@OPENSSL_1.0.0'的未定义引用   usr / lib / libpq.so.5:对ENGINE_by_id@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference toSSL_set_fd@OPENSSL_1.0.0'的未定义引用   usr / lib / libpq.so.5:对ERR_get_error@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to EXR_reason_error_string@OPENSSL_1.0.0'usr / lib / libpq.so.5的未定义引用:undefined   参考{{1 }}SSL_pending@OPENSSL_1.0.0'usr / lib / libpq.so.5:   对SSL_load_error_strings@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference to ASSFSetWarningHandler@LIBTIFF_4.0'usr / lib / libpq.so.5的未定义引用:undefined   参考X509_NAME_get_text_by_NID@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference toTIFFSetErrorHandler@LIBTIFF_4.0'   usr / lib / libvtkIO.so.5.8.0:未定义的引用   {{1} }SSL_library_init@OPENSSL_1.0.0'usr / lib / libvtkIO.so.5.8.0:undefined   参考SSL_write@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined reference toTIFFReadScanline@LIBTIFF_4.0'   usr / lib / libpq.so.5:未定义的引用   SSL_CTX_load_verify_locations@OPENSSL_1.0.0' usr/lib/libvtkIO.so.5.8.0: undefined reference to TAFFNumberOfTiles@LIBTIFF_4.0'collection2:错误:ld   返回1退出状态make [2]: * [pcl_visualizer]错误1 make 1:   * [CMakeFiles / pcl_visualizer.dir / all]错误2 make:*** [all]错误2

CmakeList文件定义如下:

SSL_free@OPENSSL_1.0.0' usr/lib/libpq.so.5: undefined
  reference to

CMakeList文件中是否缺少任何内容?

4 个答案:

答案 0 :(得分:2)

您链接的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指令)。

答案 1 :(得分:2)

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

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

现在运行make然后最后你可以将anaconda-temp重命名为anaconda,以便它对应于你的路径和bashrc中的值以及它的常规业务。

答案 2 :(得分:0)

要解决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

答案 3 :(得分:0)

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