如何在l4t-base:r32.5.0 Docker镜像中从源码编译Open3D?
L4T R32.5.0 ARM架构编译Open3D 0.13.0方案
完整可运行Dockerfile
FROM dustynv/ros:foxy-ros-base-l4t-r32.5.0 WORKDIR /workspace # 安装基础编译依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ gfortran \ libopenblas-dev \ liblapack-dev \ liblapacke-dev \ xorg-dev \ libglu1-mesa-dev \ wget \ && rm -rf /var/lib/apt/lists/* ########################## ### CMAKE安装配置 ### ########################## RUN wget https://github.com/Kitware/CMake/releases/download/v3.20.6/cmake-3.20.6-linux-aarch64.tar.gz && \ tar -xzf cmake-3.20.6-linux-aarch64.tar.gz && \ mv cmake-3.20.6-linux-aarch64 cmake && \ rm cmake-3.20.6-linux-aarch64.tar.gz # 全局暴露cmake命令,适配Docker非交互执行环境 ENV PATH="/workspace/cmake/bin:${PATH}" ################################# ### Open3D 0.13.0编译安装 ### ################################# RUN wget https://github.com/isl-org/Open3D/archive/refs/tags/v0.13.0.tar.gz && \ tar -xzf v0.13.0.tar.gz && \ mv Open3D-0.13.0 open3d && \ rm v0.13.0.tar.gz RUN cd open3d && mkdir build && cd build && \ cmake \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_CUDA_MODULE=OFF \ -DBUILD_GUI=OFF \ -DBUILD_TENSORFLOW_OPS=OFF \ -DBUILD_PYTORCH_OPS=OFF \ -DBUILD_UNIT_TESTS=OFF \ -DCMAKE_INSTALL_PREFIX=/usr/local/open3d_install \ -DPYTHON_EXECUTABLE=/usr/bin/python3 \ # ARM架构专属编译参数,修复对应报错 -DCMAKE_ASM_NASM_COMPILER=FALSE \ -DCMAKE_C_FLAGS=-pthread \ -DCMAKE_CXX_FLAGS=-pthread \ -DCMAKE_EXE_LINKER_FLAGS="-lpthread -lm" \ -DBUILD_SIMD_NEON=ON \ -DBUILD_WEBRTC=OFF \ -DBUILD_LIBREALSENSE=OFF \ .. && \ make -j$(nproc) && \ make install # 配置Open3D全局环境变量 ENV PATH="/usr/local/open3d_install/bin:${PATH}" ENV LD_LIBRARY_PATH="/usr/local/open3d_install/lib:${LD_LIBRARY_PATH}" ENV PYTHONPATH="/usr/local/open3d_install/lib/python3.8/site-packages:${PYTHONPATH}"
关键修改说明
- 补全基础编译依赖和线性代数库:新增安装build-essential、gfortran、libopenblas-dev、liblapack-dev、liblapacke-dev,解决BLAS、LAPACK相关函数未定义的报错
- 修复cmake命令生效问题:将原有的alias配置改为通过ENV全局暴露cmake路径,适配Docker非交互执行环境的特性
- 跳过x86专属NASM汇编检测:新增
-DCMAKE_ASM_NASM_COMPILER=FALSE参数,ARM架构无需NASM编译器,直接跳过检测逻辑 - 显式指定pthread链接参数:新增
-DCMAKE_C_FLAGS=-pthread、-DCMAKE_CXX_FLAGS=-pthread、-DCMAKE_EXE_LINKER_FLAGS="-lpthread -lm"参数,解决pthread函数未定义的链接错误 - 优化ARM架构适配:新增
-DBUILD_SIMD_NEON=ON启用ARM专属NEON指令集优化,新增-DBUILD_WEBRTC=OFF、-DBUILD_LIBREALSENSE=OFF禁用兼容性差的非必要模块,降低编译复杂度
编译运行注意事项
- Jetson Xavier NX设备编译时建议提前开启至少4G交换分区,避免内存不足导致编译中断
- 若需要CUDA加速支持,可将
-DBUILD_CUDA_MODULE=OFF参数修改为-DBUILD_CUDA_MODULE=ON,需确保基础镜像中已包含完整CUDA Toolkit - 编译完成后可通过
python3 -c "import open3d; print(open3d.__version__)"验证Python绑定是否安装成功
内容的提问来源于stack exchange,提问作者kronos
相关产品推荐
相关产品推荐

