/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadDirectory@LIBTIFF_4.0’

Ubuntu上OpenCV版本冲突导致未定义的引用问题

问题描述:

最近在编译Darknet-ROS-YOLOv4时,遇到如下问题

/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFLastDirectory@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFWriteEncodedStrip@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFIsTiled@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFIsByteSwapped@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFComputeStrip@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_easy_init@CURL_OPENSSL_3’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFScanlineSize@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFTileSize@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFFieldReadCount@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFRGBAImageOK@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFClose@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFSetTagExtender@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFGetFieldDefaulted@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFSwabArrayOfLong@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFFieldPassCount@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFFieldDataType@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFStripSize@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_easy_perform@CURL_OPENSSL_3’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘_TIFFDataSize@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFMergeFieldInfo@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetWarningHandler@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFReadEXIFDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFFieldTag@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFTileRowSize@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFCurrentDirectory@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_easy_setopt@CURL_OPENSSL_3’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFDefaultStripSize@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFReadTile@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_easy_cleanup@CURL_OPENSSL_3’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFWriteScanline@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFGetField@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFNumberOfStrips@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFWriteDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFFieldWithTag@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFFieldName@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadEncodedTile@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadRGBATile@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFGetTagListEntry@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_global_cleanup@CURL_OPENSSL_3’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFClientOpen@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFGetTagListCount@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFOpen@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFSetSubDirectory@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFReadRGBAImage@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadEncodedStrip@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetField@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_global_init@CURL_OPENSSL_3’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFDataWidth@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetErrorHandler@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libfreeimage.so.3:对‘TIFFSetDirectory@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用

原因分析:

在网上查找相关博文后将问题定位为Ubuntu中OpenCV的版本冲突问题。该问题是由于我的电脑上安装有源码编译的OpenCV,与Ubuntu中ROS自带的ros-opencv之间产生版本冲突。


解决方案:

定位到/src/darknet_ros/darknet_ros/中的CMakeLists.txt文件,在文件中制定位置添加如下字段即可解决。

target_link_libraries(${PROJECT_NAME}
    ${OpenCV_LIBS} /usr/lib/x86_64-linux-gnu/libtiff.so.5 
  )
回答: 当您在运行node -v命令时出现错误"node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)",这意味着您的系统缺少GLIBC库的2.28版本。\[1\] 同样,当您运行pm2 list命令时出现错误"/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /opt/atlassian/pipelines/agent/build/addons/Release-linux/module.node)",这意味着您的系统缺少GLIBC库的2.27版本。\[2\] 为了解决这个问题,您可以尝试以下步骤: 1. 首先,您可以尝试卸载现有的nodejs和nvm,使用以下命令: sudo apt-get remove nodejs nvm 2. 然后,您可以重新安装nodejs和npm,使用以下命令: sudo apt-get install nodejs sudo apt-get install npm 3. 最后,您可以再次运行node -v、npm -v和nvm -v命令,以确保安装成功。\[3\] 这些步骤应该能够解决您遇到的GLIBC版本不匹配的问题。希望对您有帮助! #### 引用[.reference_title] - *1* *3* [(解决方案) node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28‘ not found (node required by ...](https://blog.csdn.net/weixin_39842528/article/details/128740860)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27'](https://blog.csdn.net/weixin_39648492/article/details/116874288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值