当前位置: 首页 > news >正文

Linux(Ubuntu24.04)源码编译安装VTK7.1.1记录

        VTK(Visualization Toolkit)是一个开源的3D可视化开发工具包,用于开发可视化和图形处理应用程序。VTK提供了一系列的算法和工具,用于创建、渲染和处理复杂的3D图形和数据。VTK由C++编写,并提供了Python、Java和Tcl等语言的接口。它可以在Windows、Linux和macOS等操作系统上运行。

        本次安装是在WSL2的Ubuntu24.04环境下进行。

1、获取v7.1.1版本的VTK源码

        拉取源码时直接指定 -b v7.1.1。

git clone -b v7.1.1 https://github.com/Kitware/VTK

        使用git describe --tags --exact-match HEAD确认当前HEAD指向v7.1.1(tag),如果不是,使用git checkout -b v7.1.1切换。

git describe --tags --exact-match HEAD
v7.1.1

 2、编译安装

        进入VTK目录,创建build文件夹并进入,执行cmake和make,编译成功后install。

cd VTK #进入目录
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DVTK_WRAP_PYTHON=ON -DBUILD_SHARED_LIBS=ON
make -j$(nproc)  # 使用多线程加速编译
sudo make install

3、配置动态链接库

        添加 VTK 的库路径到系统中:

echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/vtk.conf
sudo ldconfig

4、编译过程遇到的问题

4.1 问题1

        如果遇到PythonCore相关的问题,可能是由于conda的python虚拟环境引起的,屏蔽掉conda即可。可将~/.bashrc的conda相关的环境设置都注释掉后,执行source ~/.bashrc,重启或者重新打开一个新的命令框,此时使用的是系统自带的python环境。

4.2 问题2

CMake Error at Rendering/OpenGL2/CMakeLists.txt:202 (message): X11_Xt_LIB could not be found. Required for VTK X lib.

        这个错误消息表明在 CMake 过程中,系统无法找到 X11_Xt_LIB 库,而这个库是 VTK 中处理 X 窗口系统相关功能所必需的。要解决这个问题,需要安装 X11 和 Xt 库。

sudo apt-get install libx11-dev libxt-dev
4.3 问题3

VTK/Wrapping/PythonCore/vtkPythonArgs.cxx:105:25: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] 105 | a = PyUnicode_AsUTF8(o);

                                                             | ~~~~~~~~~~~~~~~~^~~ | | | const char* 

        这是字符转换问题,不能将const char*转成char*,修改vtkPythonArgs.cxx的105行,将a = PyUnicode_AsUTF8(o);改为a = const_cast<char*>(PyUnicode_AsUTF8(o));

a = const_cast<char*>(PyUnicode_AsUTF8(o));
4.4 编译成功 

http://www.lryc.cn/news/514931.html

相关文章:

  • 【Go学习】-01-4-项目管理及协程
  • ES_如何设置ElasticSearch 8.0版本的匿名访问以及https_http模式的互相切换
  • PySide6 SQLite3 做的 电脑组装报价系统
  • 逻辑回归(Logistic Regression) —— 机器学习中的经典分类算法
  • 【数据库系统概论】数据库完整性与触发器--复习
  • 【机器学习:一、机器学习简介】
  • 网关的主要类型和它们的特点
  • NDA:Non-Disclosure Agreement
  • 方正畅享全媒体新闻采编系统 imageProxy.do 任意文件读取漏洞复现(附脚本)
  • OpenHarmony通过挂载镜像来修改镜像内容,RK3566鸿蒙开发板演示
  • 代理模式和适配器模式有什么区别
  • 2025年度全国会计专业技术资格考试 (甘肃考区)报名公告
  • ansible-playbook 搭建JDK
  • 数据结构(ing)
  • 杰盛微 JSM4056 1000mA单节锂电池充电器芯片 ESOP8封装
  • webpack5基础(上篇)
  • 快速理解MIMO技术
  • 【RTD MCAL 篇3】 K312 MCU时钟系统配置
  • 探索Docker Compose:轻松管理多容器应用
  • 计算机网络 (18)使用广播信道的数据链路层
  • 【vLLM 学习】欢迎来到 vLLM!
  • 现代网络基础设施中的 TCP 握手之下
  • GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)
  • NeurIPS 2024 | 像素级LLM实现图像视频理解、生成、分割和编辑大统一(昆仑万维等)
  • 中药和西药的区别
  • Spring Security(maven项目) 3.0.2.4版本
  • 【Ubuntu】安装华为的MindSpore
  • 【模型】Qwen2-VL 服务端UI
  • 计算机网络•自顶向下方法:网络层介绍、路由器的组成
  • 安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮