Ubuntu下 Colmap的安装问题

安装流程: 

建议参考官网流程:Installation — COLMAP 3.9-dev documentation

安装前的准备 

安装依赖项:

sudo apt-get install \
    git \
    cmake \
    ninja-build \
    build-essential \
    libboost-program-options-dev \
    libboost-filesystem-dev \
    libboost-graph-dev \
    libboost-system-dev \
    libeigen3-dev \
    libflann-dev \
    libfreeimage-dev \
    libmetis-dev \
    libgoogle-glog-dev \
    libgtest-dev \
    libsqlite3-dev \
    libglew-dev \
    qtbase5-dev \
    libqt5opengl5-dev \
    libcgal-dev \
    libceres-dev

要使用CUDA 支持进行编译,还需安装 Ubuntu 的默认 CUDA 包:

sudo apt-get install -y \
    nvidia-cuda-toolkit \
    nvidia-cuda-toolkit-gcc

不同系统可能遇到的问题

Ubuntu 22.04下,使用 Ubuntu 默认的 CUDA 包和 GCC 编译时出现问题,必须针对 GCC 10 进行编译:

sudo apt-get install gcc-10 g++-10
export CC=/usr/bin/gcc-10
export CXX=/usr/bin/g++-10
export CUDAHOSTCXX=/usr/bin/g++-10

在Ubuntu 16.04/18.04下,CGAL 的 CMake 配置脚本已损坏,您还必须安装 CGAL Qt5 软件包:

sudo apt-get install libcgal-qt5-dev

安装colmap

git clone https://github.com/colmap/colmap.git#下载源码
cd colmap
git checkout dev    #这一步可以报错省略,最近的版本作者删掉了dev,所以会检验不通过
mkdir build
cd build
cmake .. 
make -j16    #使用16个线程编译
sudo make install

cmake编译时遇到的问题1

解决办法:找到colmap/src/colmap/util/misc.h文件 

在#include <boost/filesystem.hpp>之前添加:

#define BOOST_BIND_GLOBAL_PLACEHOLDERS

如下面所示:

#pragma once

#include "colmap/util/endian.h"
#include "colmap/util/logging.h"
#include "colmap/util/string.h"

#include <fstream>
#include <iostream>
#include <string>
#include <vector>


#define BOOST_BIND_GLOBAL_PLACEHOLDERS

#include <boost/filesystem.hpp>

报错的原因:使用了Boost库,但其中的某些用法已被标记为不推荐使用,需要进行修改。使用全局命名空间中的Boost绑定占位符的做法不再建议使用。

问题2

 undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0`
 undefined reference to `TIFFReadEXIFDirectory@LIBTIFF_4.0`
 undefined reference to `TIFFFieldReadCount@LIBTIFF_4.0`
 undefined reference to `TIFFSetTagExtender@LIBTIFF_4.0`
 undefined reference to `TIFFCurrentDirectory@LIBTIFF_4.0`
 undefined reference to `TIFFReadTile@LIBTIFF_4.0`
 undefined reference to `TIFFSetDirectory@LIBTIFF_4.0`
 undefined reference to `TIFFClientOpen@LIBTIFF_4.0`

解决方法:修改如果预先安装了anaconda会发生冲突,最简单的方法是修改anaconda的安装路径 名字,等colmap安装完之后再将文件夹名改回。例如我的anaconda安装在/anaconda3路径下,修改anaconda的安装路径 :

#修改anaconda3 的安装路径名,使系统识别不到anaconda3即可
#我这里直接在名字后面加了1
sudo mv /anaconda3 /anaconda31

问题3:


CMake Error at CMakeLists.txt:255 (message):
  You must set CMAKE_CUDA_ARCHITECTURES to e.g.  'native', 'all-major', '70',
  etc.  More information at
  https://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.html

解决方法:将之前的cmake .. 后添加-DCMAKE_CUDA_ARCHITECTURES='86':

cmake .. -DCMAKE_CUDA_ARCHITECTURES='86'

注:具体的数字可以有自己显卡型号决定,参考You must set CMAKE_CUDA_ARCHITECTURES to e.g. ‘native’, ‘all-major’, ‘70’_JoannaJuanCV的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值