我正在尝试编译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 to
ENGINE_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 to
CRYPTO_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 to
TIFFGetFieldDefaulted@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 to
SSL_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 to
SSL_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 to
TIFFSetErrorHandler@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 to
TIFFReadScanline@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文件中是否缺少任何内容?
答案 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_FLAGS
或target_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文件中删除。一切正常。