热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux和Windows下的VTK的安装

Linux和Windows下的VTK的安装--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
  一、简要介绍
  VTK(Visualization Toolkit)是一款用于二次开发的可视化工具包,在世界上同类产品中最有影响,基本上可以作为可视化领域的规范。

  VTK的历史和现状:
  1993年12月,GE的Will Schroeder, Ken Martin两个人写了一本书: The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics,VTK作为这本书的配套软件赠送。由于VTK的出色表现,人们对软件的关注程度远远超过了书,没有几年时间VTK就拥有了巨大的用户群。VTK现在是由kitware公司维护,以开源的形式开发,全世界所有的人都可以加入到开发者的行列。现在VTK的稳定版本是5.0,nightly 版本每天都会有更新。

  VTK的特点:Open Source。采用CVS版本控制跨平台。支持Windows、Unix、Linux、Mac等多种平台功能强大。适合几乎所有的可视化领域,从医学可视化到数据可视化,都能找到VTK的用户支持多种语言开发。c语言当然不用说了,还包括脚本语言,如TCL、Python,也支持Java具有强大的开发团队。包括多家开发单位,具有商业化的维护,具有来自全世界使用者的智力资源:)

  二、安装前的准备
  因为VTK是开源的,我们能从官方网站上得到它的源码,又因为它是跨平台的,我们就要对源码进行一些包装,才能被gcc vc6.0等不同编译器所接受。VTK使用的跨平台工具是CMake,它也是kitware公司的产品,可以从官方主页上获取。

  很多人不清楚cmake到底是干什么的,我这里想解释解释。我们下载的vtk源码都是用c++编写的,是一个大的工程,无论在什么平台,用什么编译器,你都要告诉编译器该如何去编译这么一个庞然大物。工程文件是工程的一般组织形式,比如vc6.0下面是dsw文件,gcc下可以把makefile看成这么一个东西。这些工程体系告诉编译器该干什么,需要什么样的参数等,好,cmake就是这样一个用来生成适合不同编译器所需要的工程文件的工具。 cmake为什么知道那些编译参数呢,这不得不提CMakeList.txt这个文件,正是这个文件,提供了这些信息,换句话说,如果没有CMakeList.txt,我们就不能使用cmake。有人又会问,如果不用cmake,可以编译vtk吗?那当然可以,比如在vc中,可以建立一个新的工程,把文件一个个往里面添加,编译选项也要自己加,在linux下,就自己写makefile,当然,这个方法几乎是无法实现的,就算实现,在今后的开发过程中还会遇到很多麻烦。所以,还是乖乖用cmake吧!

  安装前,需要在 http://vtk.org/get-software.php 处获得下面的文件,我这里以vtk5.0为例,在winxp+vc6.0和linux+gcc下实现

  linux:
  预安装gcc3.0
  vtk-5.0.0.tar.gz vtk的源码
  vtkdata-5.0.0.tar.gz vtk例子所需要的数据
  cmake-2.4.3-Linux-i386.tar.gz cmake程序,现在从官网上下载,是免编译的

  windows:
  预安装vc6.0
  vtk-5.0.0.zip vtk的源码
  vtkdata-5.0.0.zip vtk例子所需要的数据
  CMSetup243-win32.exe cmake安装程序

  上面不同系统下,vtk源码以及data其实是一样的,只不过使用了不同打包工具。另外,cmake版本的选择是根据vtk版本来定的,比如vtk5.0所需要的最低cmake版本好像是2.0,这里我们索性用更新的2.4。

  三、windows下的vtk安装
  1、安装cmake
  这个应该很简单吧,windows下安装软件是傻瓜化的,运行CMSetup243-win32.exe,不停地点击下一步就行了

  2、解压两个压缩包,建立所需文件夹
  我不喜欢直接在源码里编译,而是另外建立一个bin文件夹。比如我把c:\vtk\作为我们的主目录,将vtk源码解压在vtk5.0这个文件夹中,把data解压在vtkdata这个文件夹中,再建立一个空的文件夹取名为bin。注意,.\vtk5.0下面,应该就是一大堆文件夹和文件,.\vtkdata下面应该也可以发现几个子文件夹。

  3、运行cmake
  首先,将源码和编译工作目录两个目录添好,在这个例子中,sourse code目录是c:\vtk\vtk5.0\,build 目录是c:\vtk\bin\。再按configure按钮,cmake软件会让你选择需要使用的编译器,这里我们选vc6.0,然后,cmake就会对系统进行扫描了,停下来之后,我们就可以修改cmake选项了。

  修改cmake选项。这个环节还真不好说,一般vtk的初学者只需要用默认设置就行了。我只提醒一些比较重要的选项:

  build_examples: 就是询问是否编译vtk中的例子,如选则on,就要花时间把vtk的例子编译一遍,我一般不选

  build_testing: test code 就是vtk开发者用来测试 vtk代码的一些测试代码,我们常常把它们当成学习vtk的例子,与build_examples类似,是否编译他们,看个人喜好。

  build_shared_libs: 如果设置为off,就只会生成lib文件,用于开发肯定是够了。如果设置为on,将会多生成dll文件。他们的区别不是我这里说得清楚的,反正如果用静态库编程,应用程序可以独立运行,尺寸也比较大,如果用动态库编程,应用程序必须找到动态库才能运行,但尺寸可以做得比较小

  cmake_install_prefix: 这个比较重要,就是以后要安装vtk的路径。有些人又要问,我编译完了不就可以用vtk了吗,为什么还要安装?对,不安装其实可以,安装的好处就是可以从 1G多的文件中提取出.h .lib .dll等精华,安装在指定目录下,并修改系统环境变量

  vtk_data_root: 一般地,cmake可以自己找到vtkdata的路径,但如果没有,把c:\vtk\vtkdata\填上即可,告诉cmake,vtk需要的数据都在哪里

  vtk_use_parallel: 对于想用vtk做并行计算的朋友,要把这个选上,对于只想学学vtk的,保持默认off

  vtk_use_guisupport: 很多人把vtk安装好了,却无法运行vtk中与mfc混合编程的例子,提示错误都是缺少vtkmfc.lib,问题就出在这个选项,我们必须把它设置为 on,再次configure之后,会出现一个新的选项vtk_use_mfc,把它也设置为on就行了。

  提示:在cmake中,有些选项是依赖于另一些选项的,比如vtk_use_guisupport和vtk_use_mfc,当我们禁用vtk_use_guisupport,vtk_use_mfc是看不到的。

  修改完cmake选项以后,不停的按configure按钮,直到没有选项显示为红色,而且此时,ok按钮可用,点击ok按钮,就可以生成vc的工程文件了。

  4、用vc6.0编译
  用vc6.0打开bin目录下的vtk.dsw文件,因为文件很多,打开速度会有些慢。打开后,直接build。编译的用时和计算机性能,以及cmake中的一些选项有关,一般1个小时内可以完成。结果保存在.\bin\bin目录下。编译也会出现不成功的时候,就要看编译器提示的错误类型来处理了!

  5、安装
  用vc6.0打开bin目录下的install.dsp文件,不用理会提示的错误,直接build。编译结果就会安装在cmake_install_prefix设定的目录下。这个时候,把c:\vtk目录删除都行。当然,建议保留,也许以后还要更改cmake选项,再次修复编译呢。cmake会检查到改动,只处理改动过的地方,没有改动过的就不要重新编译了。

  四、在linux下的vtk安装
  linux下安装和windows下安装思路是一样的,我这里假设你已经基本熟悉linux的基本操作。

  1、安装cmake
  现在从官方网站上下载的cmake是免编译的,我们可以直接在cmake源码的bin文件夹下找到ccmake这个可执行文件。就算没有编译,自己动动手,编译一下吧。另外,最好把ccmake命令加入到系统可搜索的范围内,这样就能直接运行ccmake命令了。我这里直接用#apt-get install cmake就OK了。

  2、解压两个压缩包,建立所需文件夹
  同window下安装,指定一个主目录,比如~/vtk/,建立三个文件夹,解包。

  3、cmake
  cd ~/vtk/bin/
  ccmake ../vtk5.0

  修改cmake的选项也参考前面windows下的vtk安装,因为linux下的cmake是文字界面,所以操作起来不直观,功能还是没有少的。

  4、编译
  cd ~/vtk/bin/
  make
  make命令可以看成是gcc编译器调用makefile文件,进行编译

  5、安装
  cd ~/vtk/bin/
  sudo make install
  这里之所以用sudo,是因为一些文件的读写需要root权限

  五、总结
  学习vtk最好的教材是vtk user guide,最好的解决的难题的方法是善用搜索。
推荐阅读
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
author-avatar
艾薇卡皮草它_791
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有