[英]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 to
对CRYPTO_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_FLAGS
或target_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.