colmap安装问题汇总

问题目录
问题0、没有root权限怎么安装colmap?
问题1、ERROR: SiftGPU not fully supported/Could not connect to any X display
问题2、Cannot specify include directories for imported target "freeimage::FreeImage".
问题3、could not find ZL4
问题4、Unable to locate package nvidia-cuda-toolkit-gcc
问题5、需要设置CMAKE_CUDA_ARCHITECTURES
问题6、colmap安装 libfreeimage.so: undefined reference to TIFFFieldName@LIBTIFF_4.0

本文解决在Linux下安装COLMAP时候遇到的如下问题:没有root权限怎么安装colmap?ERROR: SiftGPU not fully supported/Could not connect to any X display。Cannot specify include directories for imported target “freeimage::FreeImage”。could not find ZL4。Unable to locate package nvidia-cuda-toolkit-gcc。需要设置CMAKE_CUDA_ARCHITECTURES。

问题0、没有root权限怎么安装colmap?

问题:如果你在实验室里面,发现自己没有权限,无法安装colmap的依赖包。

解决方案:跑到实验室管理账号的大师兄(管理员)面前嚎啕大哭!诉求:1、师兄帮我装colmap。2、跪到地上求师兄给个临时的root权限,不给就赖着不走,抱着他的腿使劲哭。3、把需要root命令的地方发给大师兄、管理员,让他用sudo权限执行这几条命令。4、最后,记得客客气气的夸师兄,并请师兄吃好吃的。

问题1、ERROR: SiftGPU not fully supported/Could not connect to any X display

问题:今天是2023年10月7日,COLMAP已经支持GPU计算一些步骤,当设备包含显卡的时候,通过sudo apt install colmap不能正常使用,导致出现SiftGPU不支持、或者需要显示器的支持。

原因:是sudo apt install colmap导致的,这种预编译的包与自己的设备显卡不适配。

解决方案:卸载apt install的colmap,自己编译一遍。卸载:sudo apt remove colmap,自己安装参见colmap tutorial以及我下文的踩坑记录。

参考:

  • [1] WSL 2下Linux Colmap出错“Shader not supported by your hardware!“和“SiftGPU not fully supported“

问题2、Cannot specify include directories for imported target “freeimage::FreeImage”.

git clone https://github.com/colmap/colmap.git
cd colmap
git checkout dev
mkdir build
cd build
cmake .. -GNinja
ninja
sudo ninja install

问题:在Linux上安装colmap的时候,运行到cmake .. -GNinja这一句的时候,出现:Cannot specify include directories for imported target “freeimage::FreeImage”。但是,实际上freeimage已经安装好了。(如果没有安装,就sudo apt-get install libfreeimage3 libfreeimage-dev

定位:在git clone下得colmap/cmake/FindFreeImage.cmake文件中,第96-98行:

	target_include_directories(
        freeimage::FreeImage INTERFACE ${FREEIMAGE_INCLUDE_DIRS})
    target_link_libraries(
        freeimage::FreeImage INTERFACE ${FREEIMAGE_LIBRARIES})

可能原因:cmake版本在3.11之前,target_include_directories命令有一些问题,需要升级cmake版本。通过cmake -version命令查看当前版本。

升级cmake:不要使用apt update cmake的方法,会导致异常。建议在自己的目录下安装新的cmake包,作为优先的cmake路径。

# 下载cmake源码包
wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4-linux-x86_64.tar.gz
# 解压
tar -xzvf cmake-3.21.4-linux-x86_64.tar.gz

将下载的cmake-3.21.4文件夹下的/bin加入PATH中,并且放到以前的PATH之前。Linux搜索cmake可执行文件的时候会沿着PATH的路径挨个寻找,如果先遇到cmake-3.21.3/bin路径下的cmake,就会直接使用cmake-3.21,相当于升级了cmake。

cd cmake-3.21.4-linux-x86_64/bin # 得到cmake-3.21的路径
pwd # 查看当前路径,我的路径是/data/zwn21/software/cmake/cmake-3.21.4-linux-x86_64/bin
export PATH=/data/zwn21/software/cmake/cmake-3.21.4-linux-x86_64/bin:$PATH
# 临时的方法,如果有必要就把这句话放到.bashrc文件中。
# where cmake的输出,看到自己的cmake目录排在前面,证明使用了新版本cmake
/data/zwn21/software/cmake/cmake-3.21.4-linux-x86_64/bin/cmake
/usr/bin/cmake

# cmake -version的输出,确实是新版本了。
cmake version 3.21.4

CMake suite maintained and supported by Kitware (kitware.com/cmake).

本问题的参考:

  • [1] Installation — COLMAP 3.9-dev documentation;
  • [2] cmake升级、更新(ubuntu18.04);
  • [3] cmake:Cannot specify include directories for imported target。

问题3、could not find ZL4

问题:

CMake Error at cmake/FindLZ4.cmake:91 (message):
  Could not find LZ4
Call Stack (most recent call first):
  cmake/FindDependencies.cmake:18 (find_package)
  CMakeLists.txt:86 (include)

原因:可能还没有安装zl4,也可能是没在路径中,找不到这个库。

解决方案:装上它,sudo apt -y install liblz4-dev

参考:

  • [1] How to fix build ‘lz4 library not found, compiling without it’

问题4、Unable to locate package nvidia-cuda-toolkit-gcc

问题:在按照colmap教程安装cuda依赖的过程中,出现Unable to locate package nvidia-cuda-toolkit-gcc的问题。

# 命令
sudo apt-get install -y \
    nvidia-cuda-toolkit \
    nvidia-cuda-toolkit-gcc
# 输出
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package nvidia-cuda-toolkit-gcc

解决方案:未必是自己没安装好,只是自己的路径不够完整。

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

参考:

  • [1]【CUDA】apt install nvidia-cuda-toolkit;Please ask your administrator.

问题5、需要设置CMAKE_CUDA_ARCHITECTURES

问题:在cmake .. -GNinja的过程中,需要

CMake Error at cmake/FindDependencies.cmake:125 (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
Call Stack (most recent call first):
  CMakeLists.txt:86 (include)

解决方案:查看自己显卡的版本号,并按照版本号添加CMAKE_CUDA_ARCHITECTURES的数值。
版本号参见该链接:You must set CMAKE_CUDA_ARCHITECTURES to e.g. ‘native’, ‘all-major’, ‘70’

我是20系的显卡,最后执行命令:
cmake .. -GNinja -DCMAKE_CUDA_ARCHITECTURES='75'
参考:

  • [1] You must set CMAKE_CUDA_ARCHITECTURES to e.g. ‘native’, ‘all-major’, ‘70’

我没有别的问题了,最后记得请师兄和帮忙的朋友吃好吃的。

问题6、colmap安装 libfreeimage.so: undefined reference to TIFFFieldName@LIBTIFF_4.0

原issue链接 https://github.com/colmap/colmap/issues/188

colmap make的时候出现一大片类似的报错

libfreeimage.so: undefined reference to `TIFFFieldName@LIBTIFF_4.0'

这个其实大概率是因为安装了anaconda,所以环境变量PATH里anaconda的搜索在/usr/lib/x86_64-linux-gnu之前,因此导致使用的是anaconda的QT5(图片来自github)

ss

解决方法是在colmap根目录的CMakeLists.txt里添加

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

另一种解决办法是修改当前terminal的PATH变量

首先

echo $PATH

将返回值中不包含anaconda的部分复制出来,然后export就行,比如我的返回值是

/home/kunbpc/Installed/Anaconda3/bin:/home/kunbpc/Installed/Anaconda3/condabin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

那么我export的命令就是 

export PATH=/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

然后重新做就OK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/528806.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙ArkUI开发学习:【渲染控制语法】

ArkUI开发框架是一套构建 HarmonyOS / OpenHarmony 应用界面的声明式UI开发框架,它支持程序使用 if/else 条件渲染, ForEach 循环渲染以及 LazyForEach 懒加载渲染。本节笔者介绍一下这三种渲染方式的使用。 if/else条件渲染 使用 if/else 进行条件渲染…

AI大模型的10大趋势预判!

大模型发展竞争愈发激烈。全球瞩目的文生视频Sora、谷歌Gemini 1.5、Meta的V-JEPA以及超越GPT4的Claude3相继发布。Open AI的GPT5也即将问世。奥特曼不仅自研芯片,还投资可控核聚变公司,以算力和能源为未来储备关键资源。 在算力紧平衡和数据资源荒的背…

俄罗斯留学有哪些世界一流的名校呢,柯桥留学俄语培训

有哪些世界一流的名校呢 ☢ 理工类院校 俄罗斯是科教大国,高等教育水平位于世界前列,拥有许多国际著名大学。众多世界知名大学拥有很多独具特色的优势专业,其中理工类大学得天独厚的专业性也是被世界所认可的。凭着其高水准的教育&#xff…

gitee和idea集成

1 集成插件 2 配置账号密码 3 直接将项目传到仓库 4直接从gitee下载项目

yolov5交互式界面 通用界面-yolo-pyqt-gui(通用界面制作+代码-V5.0-6.0版本)

"YOLOv5交互式界面 - 通用界面-YOLO-PyQt-GUI" 它为YOLOv5的目标检测模型提供了一个用户友好的图形化操作界面。该项目通常基于Python的PyQt库构建,用于封装YOLOv5的功能,并将其转化为可视化工具,使得非专业开发人员也能便捷地使用…

超越接口:探索Dubbo的泛化调用机制

欢迎来到我的博客,代码的世界里,每一行都是一个故事 超越接口:探索Dubbo的泛化调用机制 前言泛化调用的概念Dubbo 中泛化调用的工作原理泛化实现动态RPC泛化调用的高级用法参数和返回值处理异常处理和错误处理策略 controller实践 前言 在现…

为什么 MySQL 采用 B+ 树作为索引?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 「为什么 MySQL 采用 B 树作为索引?」这句话,是不是在面试时经常出现。 要解释这个问题,其实不单单要从数据结构的角度出发,还要考虑磁盘 I/O 操作次数&am…

C语言-函数指针-快速排序算法(书籍示例-入门)

概述 使用C语言,实现结构体多元素,排序算法(冒泡排序),这里使用示例:书籍示例讲解 函数简介 函数声明 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) 参…

一维差分数组

797. 差分 输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n和 m 第二行包含 n个整数,表示整数序…

Redis Stack 安装部署

参考:Run Redis Stack on Docker | Redis Redis-stack 初体验_redis stack-CSDN博客 【docker】运行redis_docker run redis-stack-server requirepass-CSDN博客 Redis Stack 是一组软件套件,它主要由三部分组成。 一个是 Redis Stack Server&#x…

【HTB】 OpenSource

OpenSource 靶机地址:https://app.hackthebox.com/machines/471 信息收集 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV -p- 10.129.212.208 --min-rate5000 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-08 16:01 CST Nmap scan report f…

Nginx服务 重写功能与反向代理

六、重写功能 rewrite Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perl compatible regular expression),因此编译之前要安装PCRE库,rewrite是nginx服务器的重要功能之一,用于实现URL的…

Unity 世界坐标、屏幕坐标、UGUI 坐标 相互转换

Unity 世界坐标、屏幕坐标、UGUI 坐标 相互转换坐标转换是游戏开发过程中必不可少的环节 看下图 世界坐标、屏幕坐标、UI 坐标 三种坐标系的转换过程,此文章中的 UI 坐标特指 UGUI 坐标 从上图可以看到,世界坐标 和 UI 坐标 需要通过 屏幕坐标作为中间转…

MemberPress配置和使用会员登录页面

目录 隐藏 创建会员登录页面 编辑登录页面 设计您的登录页面 链接到您的登录页面 创建会员登录页面 要创建MemberPress会员登录页面,您需要做的就是导航到 MemberPress > 设置 > 页面选项卡,然后在页面顶部附近的“MemberPress 登录页面”…

面试官脑子有病系列:为什么 HashMap 是线程不安全的?

文章目录 前言HashMap为啥线程不安全?HashMap线程不安全的根本原因put 方法中的非原子性操作扩容时的非原子性操作 安全的HashMap总结 前言 Hi,大家好,我是王二蛋。 我们在面试的时候,经常会被问到一些有的没的、看似高深但与日…

科技型中小企业怎么做

在当今快速发展的科技时代,科技型中小企业扮演着越来越重要的角色。这些企业不仅推动了技术创新,还为经济增长和社会进步做出了巨大贡献。那么,科技型中小企业应如何制定并执行其发展战略呢? 1. 明确定位与战略规划 对于任何企业…

SD-WAN为出海电商提供了什么支持

出海电商行业的持续发展与壮大,使得网络连接的稳定性和效率成为其成功的关键因素。SD-WAN(软件定义广域网)作为一种先进的网络解决方案,为出海电商提供了诸多优势和支持。 首先,SD-WAN通过智能路由技术,能够…

华火电焰灶测评:电焰灶十大品牌哪个好?实力排名怎么样?

华火新能源电焰灶作为现代厨房技术的一大创新,近年来受到了广泛关注。在新能源电焰灶市场中,目前只有华火品牌具有独立研发、独立生产、品质背书、完善服务等雄厚的综合实力;而华火品牌凭借其独特的技术和优势,与其他传统燃气灶品…

EDM邮件群发推广多少钱?有哪些优势?

电子邮件营销(Electronic Direct Mail, EDM)以其高性价比、精准定向与可度量效果的优势,成为众多企业不可或缺的营销策略。云衔科技,作为企业数字广告营销和SaaS软件服务的领军者,以其创新的智能EDM邮件营销系统解决方…

2024 工业物联网通信与网络安全国际学术会议(IIOTNS 2024)

【会议英文官网】:www.iiotns2024.org 【会议时间】: 2024年5月10-12日 【一轮截稿时间】: 2024年3月10-12日 所有于一轮截稿时间之前投稿,后续通过审核并被大会录用的稿件享早鸟优惠:单篇立减400元!&am…