以前安装VTK很顺,这次VTK安装很不顺。同样都是安装vtk-5.10.版本,难道因为我这个杂牌的组装电脑配置问题?⽆论如何,最终还是让我折腾出来了。安装过程涉及库太多,OpenGL,Mesa这2个难点。写在这⾥,给后来⼈⼀点指引,⼀起探讨。
系统环境:
Ubuntu 12.04.5
CMake 2.8.7
FLTK-1.3.3
Mesa-10.3.5,已安装在/usr/local/Mesa-10.3.5。安装⽅法见:“”。
安装步骤:
2. 拷贝vtk-5.10.⾄⽬录/usr/local/src/下,
sudo tar -xvf vtk-5.10.
解压后的⽂件夹名称是: VTK5.10.1,在和它同级的⽬录建⼀个binVTK5.10.1⽂件夹⽤来编译。 sudo mkdir binVTK5.10.1
cd binVTK5.10.1
sudo ccmake ../VTK5.10.1/
出现如下错误:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
OPENGL_INCLUDE_DIR (ADVANCED)
used as include directory in directory /usr/src/VTK5.10.1
used as include directory in directory /usr/src/VTK5.10.1/Wrapping
used as include directory in directory /usr/src/VTK5.10.1/Utilities
按e键,可以看到提⽰:
这⾥有个VTK_DATA_ROOT_NOTFOUND,这个问题完全可以忽略。VTK_DATA_ROOT这⾥不⽤设置,也不会影响后⾯的编译结果的。不过如果你想设置也是可以的,回忆到刚刚下载vtk的⽹页中有“VTKData”字样的连接供下载,多半有关系,于是回到下载页⾯,⼤概如下: 下载“VTKData5.10.”,并拷贝到⽬录/install下。解压,将解压后的⽂件夹路径/install/vtkdata-5.10.1设置到cmake的窗⼝中 的“VTK_DATA_ROOT”和“VTK_LARGE_DATA_ROOT”中(2个⼀样)。
编译,还是前⾯⼀样的错误,⼀点也不意外!因为这⾥显然关键问题是缺少OPENGL的⼀些库⽂件。需要将Mesa编译后的lib路径设置给vtk。没装Mesa之前,没发现哪⾥有GL库,Mesa安装以后会出现GL⽬录(在/usr/local/Mesa-10.3.5/include/⽬录下)。
这⾥我已将Mesa安装单独写在另⼀个帖⼦中:“”。现假定Mesa已经被成功make install到了/usr/local/Mesa-10.3.5⽬录。CMake中与该错误相关的条⽬:
OPENGL_INCLUDE_DIR /usr/local/include
OPENGL_gl_LIBRARY OPENGL_gl_LIBRARY-NOTFOUND
OPENGL_glu_LIBRARY OPENGL_glu_LIBRARY-NOTFOUND
OPENGL_xmesa_INCLUDE_DIR OPENGL_xmesa_INCLUDE_DIR-NOTFOUND
sudo apt-get install libpng-dev libjpeg-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev
装完这个后,重新编译可见下⾯这2项⾃动填充了路径:
OPENGL_gl_LIBRARY */usr/local/lib/libGL.so
OPENGL_glu_LIBRARY */usr/lib/x86_64-linux-gnu/libGLU.so
sudo ccmake ../VTK5.10.1/
错误如下:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
OPENGL_gl_LIBRARY (ADVANCED)
linked by target "vtkVolumeRendering" in directory /usr/local/src/VTK5.10.1/VolumeRendering
linked by target "vtkWidgets" in directory /usr/local/src/VTK5.10.1/Widgets
linked by target "RenderingCxxTests" in directory /usr/local/src/VTK5.10.1/Rendering/Testing/Cxx
linked by target "TestFBOImplementation" in directory /usr/local/src/VTK5.10.1/Rendering/Testing/Cxx
linked by target "TimeRenderer" in directory /usr/local/src/VTK5.10.1/Rendering/Testing/Cxx
linked by target "TimeRenderer2" in directory /usr/local/src/VTK5.10.1/Rendering/Testing/Cxx
linked by target "VTKBenchMark" in directory /usr/local/src/VTK5.10.1/Rendering/Testing/Cxx
⼿动修改这条路径为:
OPENGL_xmesa_INCLUDE_DIR */usr/local/Mesa-10.3.5/include/
sudo ccmake ../VTK5.10.1/
完成,g键,完成。
sudo make
到58%时,出现⼀个错误如下:
...
[ 52%] Built target vtkGraphics
[ 52%] Built target vtkGenericFiltering
[ 58%] Built target vtkIO
[ 58%] Building CXX object Rendering/CMakeFiles/vtkRendering.
In file included from /usr/local/include/GL/glx.h:333:0,
from /usr/local/src/VTK5.10.1/:31:
/usr/local/include/GL/glxext.h:480:143:error: ‘GLintptr’ has not been declared
typedef void ( *PFNGLXCOPYBUFFERSUBDATANVPROC) (Display *dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
^
/usr/local/include/GL/glxext.h:480:164: error: ‘GLintptr’ has not been declared
typedef void ( *PFNGLXCOPYBUFFERSUBDATANVPROC) (Display *dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
^
/usr/local/include/GL/glxext.h:480:186: error: ‘GLsizeiptr’ has not been declared
typedef void ( *PFNGLXCOPYBUFFERSUBDATANVPROC) (Display *dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
^
/usr/local/include/GL/glxext.h:481:148: error: ‘GLintptr’ has not been declared
typedef void ( *PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC) (Display *dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
互质^
/usr/local/include/GL/glxext.h:481:169: error: ‘GLintptr’ has not been declared
typedef void ( *PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC) (Display *dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
^
/usr/local/include/GL/glxext.h:481:191: error: ‘GLsizeiptr’ has not been declared
typedef void ( *PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC) (Display *dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
^
make[2]: *** [Rendering/CMakeFiles/vtkRendering.] Error 1
make[1]: *** [Rendering/CMakeFiles/vtkRendering.dir/all] Error 2
make: *** [all] Error 2
test@test:/usr/local/src/binVTK5.10.1$ sudo gedit /usr/local/include/GL/glxext.h
test@tes:/usr/local/src/binVTK5.10.1$ sudo make
sudo gedit /usr/local/include/GL/glxext.h
在打开的⽂件第479⾏,添加如下2句:
typedef ptrdiff_t GLsizeiptr;
typedef ptrdiff_t GLintptr;
保存,关闭。
因为我的OPENGL_INCLUDE_DIR是设置的指向/usr/local/include,所以我修改/usr/local/include/GL/glxext.h直接就⽣效了。
sudo make
100%完成。
sudo make install
成功安装完。
最后,附上成功安装的vtk配置全部configure条⽬:
BUILD_DOCUMENTATION OFF
重庆pm2.5BUILD_EXAMPLES OFF
BUILD_SHARED_LIBS OFF
BUILD_TESTING ON
BZRCOMMAND BZRCOMMAND-NOTFOUND
CMAKE_AR /usr/bin/ar
CMAKE_BACKWARDS_COMPATIBILITY 2.4
CMAKE_BUILD_TYPE Debug
CMAKE_COLOR_MAKEFILE ON
CMAKE_CXX_COMPILER /usr/bin/c++
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG -g
CMAKE_CXX_FLAGS_RELEASE -O3 -DNDEBUG
CMAKE_CXX_FLAGS_RELWITHDEBINFO -O2 -g
CMAKE_C_COMPILER /usr/bin/gcc
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG -g
CMAKE_C_FLAGS_MINSIZEREL -Os -DNDEBUG
CMAKE_C_FLAGS_RELEASE -O3 -DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO -O2 -g
CMAKE_EXE_LINKER_FLAGS
CMAKE_EXE_LINKER_FLAGS_DEBUG
CMAKE_EXE_LINKER_FLAGS_MINSIZE
CMAKE_EXE_LINKER_FLAGS_RELEASE
CMAKE_EXE_LINKER_FLAGS_RELWITH
CMAKE_EXPORT_COMPILE_COMMANDS OFF
CMAKE_HP_PTHREADS OFF
CMAKE_INSTALL_PREFIX /usr/local/vtk-10.5.1
CMAKE_LINKER /usr/bin/ld
CMAKE_MAKE_PROGRAM /usr/bin/make
澳门特别行政区区徽CMAKE_MODULE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS_DEBU
CMAKE_MODULE_LINKER_FLAGS_MINS
CMAKE_MODULE_LINKER_FLAGS_RELE
CMAKE_MODULE_LINKER_FLAGS_RELW
CMAKE_NM /usr/bin/nm
CMAKE_OBJCOPY /usr/bin/objcopy
CMAKE_OBJDUMP /usr/bin/objdump
CMAKE_RANLIB /usr/bin/ranlib
CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS_DEBU
CMAKE_SHARED_LINKER_FLAGS_MINS
CMAKE_SHARED_LINKER_FLAGS_RELE
CMAKE_SHARED_LINKER_FLAGS_RELW
CMAKE_SKIP_RPATH OFF
CMAKE_STRIP /usr/bin/strip
CMAKE_THREAD_LIBS -lpthread
CMAKE_USE_PTHREADS ON
CMAKE_USE_RELATIVE_PATHS OFF
CMAKE_USE_SPROC OFF
CMAKE_USE_WIN32_THREADS OFF
CMAKE_VERBOSE_MAKEFILE OFF
CMAKE_X_CFLAGS
CMAKE_X_LIBS /usr/lib/x86_64-linux-gnu/libSM.so;/usr/lib/x86_64-linux-gnu/libICE.so;/usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/li COVERAGE_COMMAND /usr/bin/gcov
COVERAGE_EXTRA_FLAGS -l
CTEST_SUBMIT_RETRY_COUNT 3
CTEST_SUBMIT_RETRY_DELAY 5
CVSCOMMAND CVSCOMMAND-NOTFOUND
CVS_UPDATE_OPTIONS -d -A -P
DART_TESTING_TIMEOUT 1500邵东新发现
EXODUSII_DISABLE_COMPILER_WARN ON
GITCOMMAND /usr/bin/git
HDF5_BUILD_CPP_LIB OFF
HDF5_BUILD_HL_LIB ON
HDF5_DISABLE_COMPILER_WARNINGS ON
HDF5_ENABLE_HSIZET ON
HDF5_ENABLE_LARGE_FILE ON
HDF5_ENABLE_PARALLEL OFF
HDF5_ENABLE_SZIP_SUPPORT OFF
HDF5_ENABLE_Z_LIB_SUPPORT ON
HDF5_Enable_Clear_File_Buffers ON
HDF5_Enable_Instrument OFF
HDF5_METADATA_TRACE_FILE OFF
HDF5_STRICT_FORMAT_CHECKS OFF
HDF5_USE_FILTER_FLETCHER32 ON
HDF5_USE_FILTER_NBIT ON
HDF5_USE_FILTER_SCALEOFFSET ON
HDF5_USE_FILTER_SHUFFLE ON
HDF5_USE_H5DUMP_PACKED_BITS ON
HDF5_WANT_DATA_ACCURACY ON
HDF5_WANT_DCONV_EXCEPTION ON
HGCOMMAND HGCOMMAND-NOTFOUND
MAKECOMMAND /usr/bin/make -i
MEMORYCHECK_COMMAND MEMORYCHECK_COMMAND-NOTFOUND MEMORYCHECK_SUPPRESSIONS_FILE
NETCDF4_CHUNK_CACHE_NELEMS 1009
NETCDF4_CHUNK_CACHE_PREEMPTION 0.75
NETCDF4_CHUNK_CACHE_SIZE 4194304
NETCDF4_DEFAULT_CHUNKS_IN_CACH 10
NETCDF4_DEFAULT_CHUNK_SIZE 4194304
NETCDF4_MAX_DEFAULT_CACHE_SIZE 67108864
NETCDF_DISABLE_COMPILER_WARNIN ON
NETCDF_ENABLE_CXX ON
NETCDF_ENABLE_NETCDF4 ON
OPENGL_INCLUDE_DIR /usr/local/include
OPENGL_gl_LIBRARY /usr/local/lib/libGL.so
OPENGL_glu_LIBRARY /usr/lib/x86_64-linux-gnu/libGLU.so
OPENGL_xmesa_INCLUDE_DIR /usr/local/Mesa-10.3.5/include
PROJ_LIST_EXTERNAL OFF
PROJ_USE_GSL OFF
PROJ_USE_PTHREADS OFF
PYTHON_EXECUTABLE /usr/bin/python
SCPCOMMAND /usr/bin/scp
SITE pangolin
SLURM_SBATCH_COMMAND SLURM_SBATCH_COMMAND-NOTFOUND SLURM_SRUN_COMMAND SLURM_SRUN_COMMAND-NOTFOUND
SVNCOMMAND SVNCOMMAND-NOTFOUND
VERDICT_BUILD_DOC OFF
VERDICT_ENABLE_TESTING OFF
VERDICT_MANGLE ON
VERDICT_MANGLE_PREFIX vtk
VERDICT_USE_FLOAT OFF
VLI_LIBRARY_FOR_VP1000 VLI_LIBRARY_FOR_VP1000-NOTFOUND
VTK_BUILD_FORWARDING_EXECUTABL OFF
VTK_DATA_ROOT /install/VTKData5.10.1/
VTK_DEBUG_LEAKS OFF
VTK_EXTRA_COMPILER_WARNINGS OFF
VTK_GLEXT_FILE /usr/local/src/VTK5.10.1/Utilities/ParseOGLExt/headers/glext.h
VTK_GLXEXT_FILE /usr/local/src/VTK5.10.1/Utilities/ParseOGLExt/headers/glxext.h
VTK_IGNORE_BTX ON
VTK_INSTALL_THIRD_PARTY_LIBRAR OFF
VTK_LARGE_DATA_ROOT /install/VTK5.10.1/
VTK_LEGACY_REMOVE OFF盐酸诺氟沙星
VTK_LEGACY_SILENT OFF
VTK_MATERIALS_DIRS /usr/local/src/binVTK5.10.1/Utilities/MaterialLibrary/Repository
VTK_MAX_THREADS 64
VTK_OPENGL_HAS_OSMESA OFF
VTK_TESTING_LOCALE
VTK_TESTING_USE_FPE ON
VTK_TESTING_USE_LOCALE OFF潍坊学院外国语学院
VTK_USE_64BIT_IDS ON
VTK_USE_BOOST OFF
VTK_USE_CG_SHADERS OFF
VTK_USE_CHARTS ON
VTK_USE_CHEMISTRY OFF
VTK_USE_DISPLAY ON
VTK_USE_FFMPEG_ENCODER OFF