Hi, I build vtk from the master branch for ArchLinux with configuration:
cmake .. \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_SKIP_INSTALL_RPATH=ON \
-DVTK_BUILD_ALL_MODULES=ON \
-DVTK_BUILD_TESTING=OFF \
-DVTK_LEGACY_REMOVE=ON \
-DVTK_MODULE_ENABLE_VTK_FiltersOpenTURNS=NO \
-DVTK_MODULE_ENABLE_VTK_IOADIOS2=NO \
-DVTK_MODULE_ENABLE_VTK_IOLAS=NO \
-DVTK_MODULE_ENABLE_VTK_RenderingOpenVR=NO \
-DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps=OFF \
-DVTK_MODULE_USE_EXTERNAL_VTK_libharu=OFF \
-DVTK_PYTHON_VERSION="3" \
-DVTK_QT_VERSION="5" \
-DVTK_USE_EXTERNAL=ON \
-DVTK_USE_FFMPEG_ENCODER=ON \
-DVTK_USE_LARGE_DATA=ON \
-DVTK_WRAP_PYTHON=ON
After install it, I try to import vtk in python, and got this error:
>>> import vtk
Traceback (most recent call last):
File "<input>", line 1, in <module>
import vtk
File "/usr/lib/python3.8/site-packages/vtk.py", line 30, in <module>
all_m = importlib.import_module('vtkmodules.all')
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/usr/lib/python3.8/site-packages/vtkmodules/all.py", line 75, in <module>
from .vtkIOExodus import *
ImportError: /usr/lib/libvtkexodusII-9.0.so.1: undefined symbol: nc_put_var_int
This symbol is provide by netcdf, but it seems that /usr/lib/libvtkexodusII-9.0.so.1
is not properly linked with netcdf:
readelf -d /usr/lib/libvtkexodusII-9.0.so.1
Dynamic section at offset 0x655c0 contains 23 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [libvtkexodusII-9.0.so.1]
0x000000000000000c (INIT) 0x9000
0x000000000000000d (FINI) 0x4e8fc
0x0000000000000019 (INIT_ARRAY) 0x66570
0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)
0x000000000000001a (FINI_ARRAY) 0x66578
0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
0x000000006ffffef5 (GNU_HASH) 0x260
0x0000000000000005 (STRTAB) 0x4010
0x0000000000000006 (SYMTAB) 0x13a0
0x000000000000000a (STRSZ) 12475 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000007 (RELA) 0x74d0
0x0000000000000008 (RELASZ) 6792 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x0000000000000018 (BIND_NOW)
0x000000006ffffffb (FLAGS_1) Flags: NOW
0x000000006ffffffe (VERNEED) 0x7480
0x000000006fffffff (VERNEEDNUM) 1
0x000000006ffffff0 (VERSYM) 0x70cc
0x000000006ffffff9 (RELACOUNT) 12
0x0000000000000000 (NULL) 0x0
If I manually add -DCMAKE_SHARED_LINKER_FLAGS="$(pkg-config --libs netcdf)"
with cmake, this error dispeared. Maybe there is something missing when linking with netcdf?