windows/linux/mac上编译open3d 0.17.0

写在前面

1、本文内容
windows/linux/mac上编译open3d 0.17.0

2、平台
通过cmake构建项目,跨平台通用
3、转载请注明出处:
https://blog.csdn.net/qq_41102371/article/details/131891820

准备

clone源码,指定0.17.0版本

mkdir open3d170
cd open3d170
git clone -b 0.17.0 https://github.com/isl-org/Open3D.git

编译

在Open3D/CMakeLists.txt中,可以看到:
option(BUILD_SHARED_LIBS “Build shared libraries” OFF)
因此默认是编译静态库的,如需编译动态库,把OFF改成ON就行

windows:

运行下面的命令或者保存至compile.bat运行

cmake -DCMAKE_INSTALL_PREFIX=./open3d170 -DGLIBCXX_USE_CXX11_ABI=OFF ^
-DBUILD_PYTHON_MODULE=OFF -DBUILD_WEBRTC=OFF -DBUILD_EXAMPLES=OFF ^
-DBUILD_ISPC_MODULE=ON -DBUILD_GUI=OFF -S ./Open3D -B ./build
cmake --build ./build --config Release --parallel 8 --target install

如果遇到
error C4996: ‘fmt::v9::detail::arg_mapper::map’: 被声明为已否决
这个问题,找了很多地方包括官方的issue,说了是什么原因但都没有明确易懂的解决方式(截止本文写作时间20230724,若后面官方已出解答,请在评论区留言,谢谢)
https://github.com/isl-org/Open3D/issues/6257

目前暂时可行的解决方法是,在Open3D/CMakeLists.txt添加:

if(WIN32)
    add_compile_options("/wd4996")
endif()

在这里插入图片描述

后面可能再遇到链接库时失败的问题:
ssl.lib(ssl_lib.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MT_StaticRelease”(OfflineReconstruction.obj 中)

暂时的解决方法只有不编译OfflineReconstruction,找打Open3D/cpp/apps/CMakeLists.txt的最后一行,把它注释掉就不会编译OfflineReconstruction了(不编译OfflineReconstruction不会影响Open3D库的使用)

# open3d_add_app_common(OfflineReconstruction OfflineReconstruction OfflineReconstruction)

在这里插入图片描述

linux/mac:

compile.sh

cmake -DCMAKE_INSTALL_PREFIX=./open3d170_install -DGLIBCXX_USE_CXX11_ABI=OFF \
-DBUILD_PYTHON_MODULE=OFF -DBUILD_WEBRTC=OFF -DBUILD_EXAMPLES=OFF \
-DBUILD_ISPC_MODULE=OFF -DBUILD_GUI=OFF -S ./Open3D -B ./build
cmake --build ./build --config Release --parallel 8 --target install

在mac上,需要提前安装

brew install gfortran
brew install libomp

如果报错 fatal error: ‘experimental/filesystem’ file not found ,参考
https://github.com/isl-org/Open3D/issues/6211
把原来的注释掉,修改为

// #include <experimental/filesystem>
// namespace fs = std::experimental::filesystem;
#include <filesystem>
namespace fs = std::__fs::filesystem;

若在在linux下和ros一起使用,请在编译命令添加

-DGLIBCXX_USE_CXX11_ABI=OFF

注:

不管哪个平台,期间可能会遇到很多库下载超时的错,根据报错信息,下载链接里的文件放到指定路径就行,比如
在这里插入图片描述

–parallel 8表示用8个处理器进行编译,看本机支持多少个,数量越多,编译越快

-DCMAKE_INSTALL_PREFIX=./open3d170_install指定安装目录为open3d170_install,顺利编译完成并且安装成功后,open3d0.17.0会安装到目录open3d170/open3d170_install
在这里插入图片描述

参考

https://github.com/isl-org/Open3D/issues

主要做激光/影像三维重建,配准、分割等常用点云算法,技术交流、咨询可私信

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
设计和实现Windows/Linux内核驱动需要掌握以下几个方面的知识: 1. 操作系统内核原理:需要了解操作系统内核的基本原理,包括进程、线程、内存管理、I/O 等。 2. 编程语言:需要熟练掌握 C/C++ 语言,因为内核驱动程序需要使用 C/C++ 进行编写。 3. 设备驱动接口:需要了解操作系统提供的设备驱动接口,包括 Windows 的 WDM(Windows Driver Model)接口和 Linux 的设备驱动框架。 4. 硬件知识:需要了解驱动的控制对象,包括硬件设备和操作系统内核对象等。 5. 调试工具:需要了解内核调试工具,如 Windows 的 WinDbg 和 Linux 的 GDB 等。 在掌握了以上基础知识之后,可以按照以下步骤来设计和实现内核驱动程序: 1. 确定驱动类型:根据控制对象和驱动接口,确定驱动类型,如字符设备驱动、块设备驱动、网络设备驱动等。 2. 编写驱动代码:根据驱动类型和驱动接口,编写驱动代码,包括设备初始化、设备打开、设备关闭、设备读写等函数的实现。 3. 编译驱动程序:使用操作系统提供的编译工具,将驱动程序编译成二进制文件。 4. 安装驱动程序:将驱动程序安装到操作系统中,如 Windows 下使用命令行工具 sc.exe 安装驱动程序,Linux 下使用 insmod 命令安装驱动程序。 5. 调试驱动程序:使用内核调试工具对驱动程序进行调试,查找和修复问题。 需要注意的是,内核驱动程序具有较高的权限和风险,需要谨慎设计和实现,避免对系统造成损害。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诺有缸的高飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值