colmap安装的坑 undefined reference to _TIFF****@LIBTIFF_4.0‘

colmap安装的坑

问题

cmake .. -GNinja -DCMAKE_CUDA_ARCHITECTURES='70'    
ninja

运行后报如下错误:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to TIFFFieldTag@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to TIFFFieldName@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to TIFFFieldReadCount@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to TIFFFieldPassCount@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to TIFFFieldDataType@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to _TIFFDataSize@LIBTIFF_4.0'

解决方法

经过一通检查发现所要找的函数均在libtiff 5.2.2和5.7的版本中都有,不知为何就是链接不上

1. 在CMaktLists.txt中加入

set(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/cmake")

使它找到正确的库,而不是到anoconda3中去找相应函数

2.用如下cmake生成相应文件,不用ninja

cmake .. -DCMAKE_CUDA_ARCHITECTURES='70'

下一步可能用以下两种方式之一编译,不同ubuntu版本情况不同

2.1 (ubuntu20.4) 在CMakeFiles/colmap_exe.dir/link.txt 中加一个 -ltiff的链接 选项在-lfreeimage前面。
2.2(ubuntu22.4) 若没有上述的一堆-l命令在link.txt 内,直接make -j10即可。

3 make -j10

最后成功编译

[  6%] Built target sift_gpu
[ 25%] Built target vlfeat
[ 27%] Built target lsd
[ 31%] Built target poisson_recon
[ 91%] Built target colmap
[ 93%] Built target colmap_cuda
[ 93%] Linking CXX executable colmap
[100%] Built target colmap_exe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值