ubuntu 安装vtk-8.2.0问题

VTK安装包是在官网下载的,在make编译过程中,遇到这两个问题:

1、error multiple definition of `exodus_unused_symbol_dummy_1`

2、error aggregate ‘QPainterPath path’ has incomplete type and cannot be defined

针对error1的解决方案

1. error1: multiple definition of `exodus_unused_symbol_dummy_1`

        需要对安装包里面的2个文件进行修改。

  1.1  文件1路径:VTK-8.2.0/ThirdParty/exodusII/vtkexodusII/src/ex_create_par.c

        在最后一行,修改如下:

//const char exodus_unused_symbol_dummy_1; 这是原文件中的内容;
const char exodus_unused_symbol_dummy_ex_create_par; //修改为这行代码

  1.2   文件2路径:VTK-8.2.0/ThirdParty/exodusII/vtkexodusII/src/ex_open_par.c

        在最后一行,修改如下:

//const char exodus_unused_symbol_dummy_1; 这是原文件的代码
const char exodus_unused_symbol_dummy_ex_open_par; //修改为这个

  1.3   (可选)文件3路径:VTK-8.2.0/ThirdParty/exodusII/update.sh

        参考里面提到了需要对此文件中的修改。在文件的第10行:

//readonly tag="for/vtk-20191230-7.24f-v2019-12-18" //这是原代码
readonly tag="for/vtk-20200128-7.24f-v2019-12-18" //修改为这行代码

        我只修改了前两个文件,并没有修改第3个文件,重新make编译发现不报error1的错误,但出现了下面error2的错误。

针对error2的解决方案:

2.  error2: aggregate ‘QPainterPath path’ has incomplete type and cannot be defined

        这个问题解决相对简单,只需要对两个文件修改

  2.1 文件1路径: VTK-8.2.0/Rendering/Qt/vtkQtLabelRenderStrategy.cxx

        在文件中的头文件位置处加入"#include <QPainterPath>"后保存即可

/*
#include <QImage>
#include <QMap>
#include <QPainter>
*/

#include <QPainterPath>//复制这行代码添加到文件中即可

/*
#include <QPair>
#include <QPixmap>
#include <QTextDocument>
*/

  2.2   文件2路径: VTK-8.2.0/Rendering/Qt/vtkQtStringToImage.cxx

        在文件中的头文件位置处加入"#include <QPainterPath>"后保存即可

/*
#include <QFontMetrics>
#include <QImage>
#include <QPainter>
*/


#include <QPainterPath>//加入这行代码即可

/*
#include <QPixmap>
#include <QString>
#include <QTextDocument>
*/

做完以上这些再次重新编译make可以发现100%完成。

最后记得sudo make install,便可以在usr/local/include和usr/local/lib 都可以找到已经完成安装的vtk。

参考:

[1] ​​​​​​Exodus gcc 10 support (!6420) · Merge requests · VTK / VTK · GitLab 

[2] Qt 5.15 needs the include file QPainterPath (797f2869) · Commits · VTK / VTK · GitLab 

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 1. 首先,打开终端,输入以下命令更新软件包列表: sudo apt-get update 2. 安装VTK 8.2.的依赖库: sudo apt-get install build-essential cmake python-dev python-numpy libqt4-dev libvtk6-dev libvtk6-qt-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk6.3-dev libvtk6.3-qt-dev libvtk ### 回答2: 在ubuntu18.04系统上安装vtk8.2.0,可以分为以下几步: 1. 安装依赖库 sudo apt-get update sudo apt-get install build-essential cmake python-dev python-numpy libqt4-dev libqt4-opengl-dev libglew-dev libvtk6-dev libgflags-dev libgoogle-glog-dev libopenni2-dev 2. 下载vtk8.2.0的源码包 在vtk的官网上找到vtk8.2.0的源码包进行下载,下载好后解压到一个文件夹中。 3. 编译vtk8.2.0 cd vtk8.2.0 mkdir build cd build cmake .. make -j4 sudo make install 4. 配置vtk sudo ldconfig sudo ln -s /usr/local/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets-8.2.so /usr/lib/python2.7/lib-dynload/ sudo ln -s /usr/local/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets-8.2.so /usr/local/lib/python2.7/dist-packages/ sudo ln -s /usr/local/lib/python2.7/dist-packages/vtk /usr/local/lib/python2.7/site-packages/ 5. 测试vtk 在终端输入python,在python环境下输入以下代码: import vtk cone = vtk.vtkConeSource() cone.SetHeight(3.0) cone.SetRadius(1.0) cone.SetResolution(10) coneMapper = vtk.vtkPolyDataMapper() coneMapper.SetInputConnection(cone.GetOutputPort()) coneActor = vtk.vtkActor() coneActor.SetMapper(coneMapper) renderer = vtk.vtkRenderer() renderer.AddActor(coneActor) renderer.SetBackground(0.1, 0.2, 0.4) renWin = vtk.vtkRenderWindow() renWin.AddRenderer(renderer) renWin.SetSize(300, 300) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) iren.Initialize() renWin.Render() iren.Start() 如果能够成功运行,证明vtk已经成功安装。 注意事项: 1. 在安装vtk前,需要安装好python及相关库。 2. 在编译vtk时,需要注意编译选项是否正确。 3. 配置vtk时,需要注意路径是否正确。 4. 如果出现问题,可以在vtk的官网上查看相关文档,或在社区寻求帮助。 ### 回答3: VTK(Visualization Toolkit)是一款用于3D可视化的开源软件,它支持多种数据类型和格式,并可在多种平台上运行。Ubuntu18.04是一款免费的开源操作系统,它采用了Linux内核,可在各种硬件上运行,因此成为很多科学计算和数据可视化工具的首选系统。本文将介绍如何在Ubuntu18.04上安装VTK8.2.0。 1. 在Ubuntu18.04上安装必要的依赖包 在终端中输入以下命令,安装必要的依赖软件包: sudo apt-get install build-essential cmake python-dev python-numpy 2. 下载VTK8.2.0源码 在终端中输入以下命令,下载VTK8.2.0源码压缩包: wget https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz 3. 解压源码包并创建构建目录 在终端中输入以下命令,解压源码包并创建构建目录: tar -xvzf VTK-8.2.0.tar.gz cd VTK-8.2.0 mkdir build cd build 4. 配置编译选项 在构建目录下使用cmake进行配置和编译: cmake \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DBUILD_SHARED_LIBS:BOOL=ON \ -DVTK_WRAP_PYTHON:BOOL=ON \ -DVTK_PYTHON_VERSION:STRING=2 \ -DVTK_USE_X:BOOL=OFF \ -DVTK_USE_GUISUPPORT:BOOL=ON \ -DVTK_USE_QVTK:BOOL=ON \ -DVTK_USE_QT:BOOL=ON .. 其中,编译选项包括: -DCMAKE_BUILD_TYPE:编译类型,Release表示编译发布版,Debug则表示编译调试版。 -DBUILD_SHARED_LIBS:是否构建共享库。 -DVTK_WRAP_PYTHON:是否编译Python接口。 -DVTK_PYTHON_VERSION:Python版本。 -DVTK_USE_X:是否使用X-window系统。 -DVTK_USE_GUISUPPORT:是否使用GUI支持。 -DVTK_USE_QVTK:是否使用Qt VTK。 -DVTK_USE_QT:是否使用Qt。 5. 编译和安装 在构建目录中使用make命令进行编译,然后使用sudo make install命令进行安装: make -j4 sudo make install 6. 检查安装结果 在终端中输入python,进入Python交互模式。输入以下命令: import vtk print(vtk.vtkVersion.GetVTKVersion()) 如果显示版本号为8.2.0,则表示VTK8.2.0已经成功安装。 至此,VTK8.2.0在Ubuntu18.04上的安装完成。可以在Python中使用VTK库进行3D可视化编程,并可运用VTK的各种功能和算法,处理不同类型和格式的数据文件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值