Skip to content

ubuntu下安装VTK

操作环境

  • vmware 10
  • ubuntu-14.04.2-desktop-amd64

具体操作

安装Cmake

  1. 安装curses库,这个库可以让cmake运行成GUI界面,生成ccmake
shell
sudo apt-get install libncurses5-dev
sudo apt-get install cmake-curses-gui
  1. 安装cmake,这里一定要手动选择安装3.7.0的cmake,而不是apt-get install,否则会是问题很多的2.8.12
shell
cd /home/bwb #进入你自己的目录
wget "https://cmake.org/files/v3.7/cmake-3.7.0.tar.gz"
tar zxvf cmake-3.7.0.tar.gz
cd cmake-3.7.0
sudo su #一定要加这句话root,否则下面语句会没有权限
./bootstrap && make && make install
  1. 验证安装
shell
cmake --version
ccmake --version

下载和编译VTK

安装openGL环境:

shell
sudo apt-get install freeglut3-dev

安装Qt4.x环境:

shell
sudo apt-get install qt4-default

下载VTK:VTK官网

shell
cd /home/bwb
wget "https://www.vtk.org/files/release/6.3/VTK-6.3.0.tar.gz"
mkdir VTK
cd VTK
tar -zxvf ../VTK-6.3.0
mkdir build

编译VTK

shell
cd build
ccmake ../VTK-6.3.0
c c #按c配置,再按c确定配置
g #按g生成
make 
sudo make install

配置注意这些:

shell
BUILD_EXAMPLES            *OFF
BUILD_TESTING             *OFF
VTK_Group_Qt              *ON
VTK_RENDERING_BACKEND     *OpenGL

测试VTK

修改CMakeLIst.txt文件

shell
cd /home/bwb/VTK/VTK7.7.0/Examples/Tutorial/Step1/Cxx
sudo gedit CMakeList.txt

把findpacakge内容注释掉,改为NO_MODULE:

shell
#find_package(VTK COMPONENTS
#  vtkFiltersSources
#  vtkInteractionStyle
#  vtkRendering${VTK_RENDERING_BACKEND}
#)
find_package(VTK 6.3 REQUIRED NO_MODULE)

进行编译

shell
sudo cmake .
sudo make
./Cone

会显示一个快速横向旋转的圆锥体,表明安装成功 c3789cbb62c58d787266feb7570b4f63.png

遇到的坑

1、提示Could NOT find OpenGL (missing: OPENGL_gl_LIBRARY...

没有安装OpenGL依赖库

shell
sudo apt-get install freeglut3-dev

2、提示requires Qt 4.x

没有安装Qt 4.x

shell
sudo apt-get install qt4-default

3、测试时报错vtkRendering不可用

CMakeLists.txt的第11行处的find_package出错,因为例子程序没有跟上版本更新,把11行的find_package注释掉,改为:

shell
find_package(VTK 7.0 REQUIRED NO_MODULE)

4、提示X Error:GLXBadFBConfig

shell
X Error of failed request:  GLXBadFBConfig
  Major opcode of failed request:  150 (GLX)
  Minor opcode of failed request:  34 ()
  Serial number of failed request:  39
  Current serial number in output stream:  40

原因在于VTK7.0以上版本默认采用OpenGL2进行编译,然而又没有兼容好。
解决方法是重新编译和安装一遍VTK,编译参数选择OpenGL。

5、编译的时候cannot find -lvtkRenderingOpenGL2

shell
/usr/bin/ld: cannot find -lvtkRenderingOpenGL2  
/usr/bin/ld: cannot find -lvtkglew  
/usr/bin/ld: cannot find -lvtkRenderingVolumeOpenGL2  
/usr/bin/ld: cannot find -lvtkDomainsChemistryOpenGL2  
/usr/bin/ld: cannot find -lvtkRenderingGL2PSOpenGL2  
/usr/bin/ld: cannot find -lvtkRenderingContextOpenGL2

原因是在第一遍安装的时候,选择了OpenGL2;然后发现不对,又重新安装了一遍OpenGL编译的VTK,但是它不会删除OpenGL2相关的东西,所以发生了冲突。

网上提供的解决方法是:

  • 删除/usr/local/lib中所有涉及到OpenGL2的lib(注意别删除了其他的lib,那是其他程序的)
  • 删除/usr/local/include中的vtk文件夹
  • 删除/home/bwb/build文件夹下编译好的所有文件
  • 重新编译vtk,编译的时候选择OpenGL

然而我用了这个方法也不行,最后干脆直接用低版本的vtk6.3。

参考文档

转载请注明出处https://bananaoven.com/articles/186.html | 香蕉微波炉
分享许可方式知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
重大发现:转载注明原文网址的同学刚买了彩票就中奖,刚写完代码就跑通,刚转身就遇到了真爱。