1前提
已经安装了ancoda ,这个是个巨坑,装了aconda严重影响后面安装
2-0 装eigen3
2-1装ceres
编译ceres时:error: ‘integer_sequence’ is not a member of ‘std‘错误
https://blog.csdn.net/qq_41586768/article/details/107541917
按照上安装的ceres库版本,以及网上大多数教程安装的版本都会和eigen3(3.3.7)有冲突,编译时会报如下错误:
这里换成1.14.0版本的ceres问题得以解决
2-2在编译时对libtiff4.0的未定义引用(Ubuntu 16.04)
5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFReadEXIFDirectory@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFFieldReadCount@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFSetTagExtender@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFCurrentDirectory@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFReadTile@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFSetDirectory@LIBTIFF_4.0' /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFClientOpen@LIBTIFF_4.0'
最新更新:
根本不是什么5。0和4。0的本版问题,是因为aconda环境中的libtiff干扰了ubutu1604本身的libtiff,导致编译出问题。
1要么就先不要装acoda
2装了acoda就先从环境中移除路径重新编译
- 2-1 把aconda的文件夹名字随便改下,例如随便加个字母这样系统就找不到了
- 2-2 可以在系统路径暂时删除aconda的路径,编译完
-
先把保存一份
bashrc
然后修改去掉aconda的路径:
sudo gedit ~/.bashrc
(或者双击直接修改)然后把 最后 Anaconda 的路径前面加 # 给注释掉:
# export PATH=/path/to/anaconda/bin:$PATH
然后:
source ~/.bashrc
还不行的话,再次基础上执行后面(我还没有尝试,我直接重新装了系统)
如果尚未安装所需的软件包,请安装它。如果具有所需的文件,但是路径不正确,则可以按照以下步骤进行操作。
就手动找到当前系统所有的libtiff.so路径
locate libtiff.so
(如果aconda还在系统中,这里会有很多个记录)
找到依赖文件后,下一步是用于替换文件其他位置的库文件的路径
找到依赖库
ldd /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so
可以看到实际依赖的库的位置
手动逐个替换库(如果有多个位置的话),直到可以用的那个成功
您可以看到要替换的路径。有时系统中有多个可用项目,如果不确定要使用哪个项目,则可以尝试一下,直到找到正确的文件为止。
要创建软链接,源文件位于ln命令的前面,后跟相关位置。 例如,
ln -sf /var/lib/docker/aufs/diff/07382a150bf28b01a386095ec78a8d2e92fbf670393b3bd16b6f8fbc2d159ae1/usr/lib/x86_64-linux-gnu/libtiff.so.5 /usr/lib/x86_64-linux-gnu/libtiff.so.5
最终重新编译,一般即可解决。 祝好运
-------------------------------------------------------------------------------(有问题的记录)------------------------------------------------------------------------------------
原来网址:
https://stackoom.com/question/34XM2/CMake-%E9%93%BE%E6%8E%A5libfreeimage-libtiff%E6%97%B6%E5%87%BA%E9%94%99
旧有的记录:
https://github.com/colmap/colmap/issues/188
需要的是4.0但是最新的是5.0
手动下载4.0源码编译
安装好的
重新编译colmap工程
其他说明:
整个问题就是,因为提前装了anaconda3,他的路径和库干扰了系统自身默认的库和路径,导致安装编译的时候找库有问题,所以要去掉anaconda3的影响。
1 要么直接把anaconda3名字改了,导致找不到这个,也就不再用里面的配置。
完啦了再改回来
2 要么注销了aconda环境,安装完再回来(这个比较复杂,不建议)
3 camke的时候直接指定用系统的库而不是去adonda下面找(测试 cmake不再报错,但是后面make回报错)
SET(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/cmake")
`TIFFReadDirectory@LIBTIFF_4.0‘未定义的引用
“undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'” 问题解决方法
去libtiff管网上下载 tiff-4.0.4.tar.gz压缩包安装即可。安装方法如下:
解压tar -zxvf tiff-4.0.4.tar.gz
进入tiff目录
./configure
make
make install
网上有介绍通过sudo apt-get install libtiff4-dev安装,但是运行该命令后,提示libtiff4-dev已经被libtiff5-dev替代,只可安装libtiff5-dev,安装后并未解决问题。
解决方法:
在安装与tiff有关的包,如opencv时候,把conda的系统引用从系统路径里面消除掉,然后再进行安装.
ctrl+h 显示隐藏
先把保存一份 bashrc
然后修改去掉aconda的路径:
sudo gedit ~/.bashrc
(或者双击直接修改)
然后把 最后 Anaconda 的路径前面加 # 给注释掉:
# export PATH=/path/to/anaconda/bin:$PATH
然后:
source ~/.bashrc
