配置安装colmap的踩坑实践
配置的一个项目需要使用colmap,在编译安装colmap的过程中踩了很多坑,本文记录了安装colmap的全过程,以及如何解决报错的内容。
安装
获取源代码
项目要求使用colmap 3.8版本,在这出现了本次安装最大的一个坑:
colmap 3.8调用了cuda11中的一些函数,但是这些函数在cuda12中已经被废弃了,而colmap 3.9就可以适配cuda12。所以我们使用cuda11.8来编译
选择3.8版本
1 | git clone https://github.com/colmap/colmap |
编译
安装依赖
来自默认 Ubuntu 存储库的依赖项:
1 | sudo apt-get install \ |
1 | mkdir build |
Cmake
官方给出的编译方式如下:
1 | cmake .. -GNinja |
这里有两个坑:
1 | CMake Error at cmake/FindDependencies.cmake:125 (message): |
需要我们手动设置 CMAKE_CUDA_ARCHITECTURES 以适应编译的cuda平台
但是我们选择native后虽然可以通过cmake,但是在编译的时候会出现另一个报错:
1 | nvcc fatal : Unsupported gpu architecture 'compute_native' |
原因是无法识别GPU的计算能力。
正确的方式是(参考 https://github.com/colmap/colmap/issues/2464):
1 | 检查 GPU 计算能力正在使用下面的命令 |
make
在编译快完成的时候会出现一个链接错误(如果你使用的是anaconda的话)
参考 COLMAP 安装报错 Undefined reference to libtiff4.0 解决办法
https://blog.csdn.net/weixin_49292745/article/details/123686007
发现在先前 cmake ..时,已出现warning:
1 | runtime library [libgmp.so.10] in /usr/lib/x86_64-linux-gnu may be hidden by files in: /home/damon/anaconda2/lib |
原来是用了anaconda的Qt,在colmap文件夹下的Cmakelist.txt中加入如下字段强制切换为系统Qt
1 | SET(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/cmake") |
然后删除build文件夹中的内容再次重新进行编译,最终编译成功。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.