安装Anaconda3后编译Find_object功能包出现Libtiff未定义的引用等报错

文章讲述了在Ubuntu18.04ROSMelodic环境中,使用Anaconda3时在编译find-object功能包时遇到LIBTIFF_4.0版本不匹配的问题,介绍了冲突的原因以及详细的解决步骤:下载并安装Tiff-4.0.4,配置、编译和安装,最后移除原conda中的libtiff库,重新编译。
摘要由CSDN通过智能技术生成

一、问题描述

环境:Ubuntu18.04 ROSMelodic Anaconda3

笔者之前在编译find-object功能包的时候,并未出现任何问题。在安装了anaconda3后编译该功能包报错LIBTIFF_4.0未定义的引用。

//usr/lib/libgdal.so.20:对‘TIFFLastDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFWriteEncodedStrip@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFIsTiled@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSwabArrayOfShort@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFIsByteSwapped@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFFlushData@LIBTIFF_4.0’未定义的引用
/home/wheeltec-client/anaconda3/lib/libQt5Core.so.5.15.2:对‘std::pmr::monotonic_buffer_resource::~monotonic_buffer_resource()@GLIBCXX_3.4.28’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFFreeDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFScanlineSize@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFWriteEncodedTile@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFWriteBufferSetup@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFTileSize@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFRGBAImageOK@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFClose@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFWriteRawStrip@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSetTagExtender@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFGetFieldDefaulted@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSwabArrayOfLong@LIBTIFF_4.0’未定义的引用
/home/wheeltec-client/anaconda3/lib/libQt5Core.so.5.15.2:对‘vtable for std::pmr::monotonic_buffer_resource@GLIBCXX_3.4.28’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFTileSize64@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFReadRGBATileExt@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFStripSize@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFMergeFieldInfo@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFSetWarningHandler@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFGetConfiguredCODECs@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libgeotiff.so.2:对‘_TIFFmalloc@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libgeotiff.so.2:对‘_TIFFmemcpy@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFClientdata@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libgeotiff.so.2:对‘_TIFFrealloc@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libgeotiff.so.2:对‘_TIFFmemset@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFReadRGBAStripExt@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFWriteCheck@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSetWriteOffset@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFDefaultStripSize@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFScanlineSize64@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFIsBigEndian@LIBTIFF_4.0’未定义的引用
/home/wheeltec-client/anaconda3/lib/libQt5Core.so.5.15.2:对‘std::__exception_ptr::exception_ptr::_M_release()@CXXABI_1.3.13’未定义的引用
//usr/lib/x86_64-linux-gnu/libpoppler.so.73:对‘TIFFFdOpen@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFWriteScanline@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘_TIFFfree@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSwabLong@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFGetField@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSwabShort@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFNumberOfStrips@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFWriteDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libgdcmMSFF.so.2.8:对‘uuid_generate@UUID_1.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFReadEncodedTile@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFReadRGBATile@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libgeotiff.so.2:对‘TIFFClientOpen@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFFlush@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libgdcmMSFF.so.2.8:对‘uuid_parse@UUID_1.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFErrorExt@LIBTIFF_4.0’未定义的引用
/home/wheeltec-client/anaconda3/lib/libQt5Core.so.5.15.2:对‘std::pmr::get_default_resource()@GLIBCXX_3.4.26’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFNumberOfDirectories@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFWriteRawTile@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFStripSize64@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFCreateDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFOpen@LIBTIFF_4.0’未定义的引用
/home/wheeltec-client/anaconda3/lib/libQt5Gui.so.5.15.2:对‘std::__throw_bad_array_new_length()@GLIBCXX_3.4.29’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSwabArrayOfDouble@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSetSubDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFUnlinkDirectory@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFReadEncodedStrip@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFSetField@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFCurrentDirOffset@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFIsCODECConfigured@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFUnsetField@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFDataWidth@LIBTIFF_4.0’未定义的引用
/home/wheeltec-client/anaconda3/lib/libQt5Core.so.5.15.2:对‘std::__exception_ptr::exception_ptr::_M_addref()@CXXABI_1.3.13’未定义的引用
//usr/lib/x86_64-linux-gnu/libgdcmMSFF.so.2.8:对‘uuid_unparse@UUID_1.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFRewriteDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFGetSizeProc@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFSetErrorHandler@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFSetDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFReadScanline@LIBTIFF_4.0’未定义的引用
//usr/lib/libgdal.so.20:对‘TIFFNumberOfTiles@LIBTIFF_4.0’未定义的引用
/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用
collect2: error: ld returned 1 exit status
find-object-melodic-devel/src/CMakeFiles/print_objects_detected.dir/build.make:177: recipe for target '/home/wheeltec-client/Desktop/find_object_3d/devel/lib/find_object_2d/print_objects_detected' failed
make[2]: *** [/home/wheeltec-client/Desktop/find_object_3d/devel/lib/find_object_2d/print_objects_detected] Error 1
CMakeFiles/Makefile2:2516: recipe for target 'find-object-melodic-devel/src/CMakeFiles/print_objects_detected.dir/all' failed
make[1]: *** [find-object-melodic-devel/src/CMakeFiles/print_objects_detected.dir/all] Error 2

二、出现原因

出现原因主要是TIFF的库和conda的TIFF库发生了冲突,编译程序需要的是TIFF-4.0版本,但是系统内的不是这个版本。

三、解决方法

1、下载并安装Tiff-4.0.4(下载链接)

2、解压到任意位置,进入目录

3、./configure

4、make

5、make install

6、conda remove libtiff

重新编译即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kane2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值