ubuntu 搬移文件后 出现的libtiff问题

2024-01-10 03:18
文章标签 问题 ubuntu 搬移 libtiff

本文主要是介绍ubuntu 搬移文件后 出现的libtiff问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在把一个c++工程文件夹移动以后,重新make,出现一下错误

[ 90%] Built target myslam
[ 90%] Linking CXX executable ../../bin/run_vo
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFReadDirectory@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFWriteEncodedStrip@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFIsTiled@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2:对‘TIFFDefaultStripSize@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2:对‘TIFFReadTile@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFWriteScanline@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘_TIFFfree@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFGetField@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFNumberOfStrips@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFScanlineSize@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2:对‘TIFFTileSize@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFWriteDirectory@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFReadEncodedTile@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFReadRGBATile@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFClose@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFClientOpen@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFRGBAImageOK@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2:对‘TIFFGetFieldDefaulted@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2:对‘TIFFNumberOfDirectories@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFOpen@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2:对‘TIFFReadRGBAImage@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFReadEncodedStrip@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFSetField@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFSetWarningHandler@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFSetErrorHandler@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘_TIFFmalloc@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2:对‘TIFFSetDirectory@LIBTIFF_4.0’未定义的引用
/usr/local/lib/libopencv_imgcodecs.so.3.4.4:对‘TIFFReadScanline@LIBTIFF_4.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2:对‘TIFFNumberOfTiles@LIBTIFF_4.0’未定义的引用
collect2: error: ld returned 1 exit status
test/CMakeFiles/run_vo.dir/build.make:131: recipe for target '../bin/run_vo' failed
make[2]: *** [../bin/run_vo] Error 1
CMakeFiles/Makefile2:140: recipe for target 'test/CMakeFiles/run_vo.dir/all' failed
make[1]: *** [test/CMakeFiles/run_vo.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

按照网上做法,下载libtiff-4,安装

tar -zxvf tiff-4.0.4.tar.gz
cd tiff-4.0.4
./configure
make
make install

发现报错,一些文件无法remove,于是上面最后一个改用 sudo make install

但是工程还是没法编译

只好,准备卸载opencv3.4.4,重装并WITH_TIFF=ON

cd /home/hy/opencv/build
make uninstall//卸载掉配置路径中的文件
sudo rm -r build//删除build文件
//删除掉环境中有关的其余包
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

然后重新安装

#在opencv344 的build文件夹执行,这里关闭了VTK,不编译opencv_viz,避免类似题目的vtk bug
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D BUILD_TIFF=ON -D WITH_VTK=OFF ..
#双线程编译
make -j2
#安装
sudo make installsudo gedit /etc/ld.so.conf.d/opencv.conf
#文件末尾添加
/usr/local/lib
sudo ldconfig  sudo gedit /etc/bash.bashrc 
#在打开的文件末尾添加 用于 pkg-config
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH source /etc/bash.bashrc
sudo updatedb

然后重新把工程中的opencv都调用opencv344,只有这一版本编译了tiff,但那是注意没有viz模块(为了避免类似bug  WITH_VTK=OFF。

此后自己工程去掉viz模块,orbslam等调整cmakelist中的opencv版本,全部重新编译模块,就正常了。

发现的一些:
编译要用一致的g++、gcc:

之前的cpp都用g++、gcc-5.4.0编译的,之后由于安装cuda给降级到4.9了,这时候编译的库会和之前编译的有冲突,不能通用,后来发现文件lib中有5.4的版本,于是重新链接ln到5.4。

orb-slam的编译:

opencv准备好了,因为依赖opencv,pagolin重新编译,然后重新编译代码thirdparty的dow2和g2o。

这篇关于ubuntu 搬移文件后 出现的libtiff问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/589369

相关文章

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入