[Paraview] undefined references to EGL library functions when using NVIDIA's libEGL_nvidia.so.384.90

Christopher Paolini paolini at engineering.sdsu.edu
Fri Dec 1 11:27:39 EST 2017


Greetings,

I'm trying to build pvserver with GPU headless rendering capability and
am getting undefined references to EGL library functions when using
NVIDIA's libEGL_nvidia.so.384.90 library.  My cmake build specification
is:

cmake ../paraview \
-DVTK_USE_EGL=ON \
-DVTK_OPENGL_HAS_EGL=ON \
-DEGL_INCLUDE_DIR=/usr/include/nvidia-384 \
-DEGL_opengl_LIBRARY:FILEPATH=/usr/local/nvidia/lib64/libOpenGL.so.0 \
-DEGL_gldispatch_LIBRARY:FILEPATH=/usr/local/nvidia/lib64/libGLdispatch.so.0 \
-DEGL_LIBRARY:FILEPATH=/usr/local/nvidia/lib64/libEGL_nvidia.so.384.90 \
-DOPENGL_INCLUDE_DIR=:FILEPATH=/usr/include/nvidia-384 \
-DVTK_USE_X=OFF \
-DVTK_OPENGL_HAS_OSMESA=OFF \
-DPARAVIEW_BUILD_QT_GUI=OFF \
-DBUILD_SHARED_LIBS=ON -DPARAVIEW_USE_MPI=ON

libvtkRenderingOpenGL2-pv5.4.so.1 is reporting undefined references to
the egl* functions:

[100%] Building CXX object CommandLineExecutables/CMakeFiles/pvserver.dir/pvserver.cxx.o
[100%] Linking CXX executable ../bin/pvserver
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglTerminate'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglCreateWindowSurface'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglQueryString'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetProcAddress'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetError'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglCreatePbufferSurface'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglDestroySurface'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglBindAPI'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglInitialize'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglQuerySurface'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglChooseConfig'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglSwapBuffers'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglCreateContext'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetCurrentDisplay'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetDisplay'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglMakeCurrent'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglDestroyContext'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetCurrentSurface'
collect2: error: ld returned 1 exit status
CommandLineExecutables/CMakeFiles/pvserver.dir/build.make:124: recipe for target 'bin/pvserver' failed

Manually linking while specifying libEGL_nvidia.so.384.90 and
libEGL.so.1 does not resolve these references either:

/usr/bin/c++   -I/usr/include/nvidia-384  -g    CMakeFiles/pvserver.dir/pvserver.cxx.o  -o ../bin/pvserver -rd
ynamic /usr/lib/nvidia-384/libEGL.so.1  ../lib/libvtkPVServerManagerApplication-pv5.4.so.1 ../lib/libvtkPVServ
erManagerCore-pv5.4.so.1 ../lib/libvtkPVServerImplementationCore-pv5.4.so.1 ../lib/libvtkPVClientServerCoreCor
e-pv5.4.so.1 ../lib/libvtkFiltersParallel-pv5.4.so.1 ../lib/libvtkFiltersExtraction-pv5.4.so.1 ../lib/libvtkFi
ltersModeling-pv5.4.so.1 ../lib/libvtkFiltersGeometry-pv5.4.so.1 ../lib/libvtkPVVTKExtensionsCore-pv5.4.so.1 .
./lib/libvtkPVCommon-pv5.4.so.1 ../lib/libvtkClientServer-pv5.4.so.1 ../lib/libvtkIOXMLParser-pv5.4.so.1 ../li
b/libvtkFiltersSources-pv5.4.so.1 ../lib/libvtkFiltersGeneral-pv5.4.so.1 ../lib/libvtkFiltersCore-pv5.4.so.1 .
./lib/libvtkIOImage-pv5.4.so.1 ../lib/libvtkPVVTKExtensionsSIL-pv5.4.so.1 ../lib/libvtkParallelMPI-pv5.4.so.1
../lib/libvtkParallelCore-pv5.4.so.1 ../lib/libvtkIOLegacy-pv5.4.so.1 ../lib/libvtkIOCore-pv5.4.so.1 ../lib/li
bvtkCommonExecutionModel-pv5.4.so.1 ../lib/libvtkCommonDataModel-pv5.4.so.1 ../lib/libvtkCommonSystem-pv5.4.so
.1 ../lib/libvtkCommonTransforms-pv5.4.so.1 ../lib/libvtkCommonMisc-pv5.4.so.1 ../lib/libvtkCommonMath-pv5.4.s
o.1 ../lib/libvtkCommonCore-pv5.4.so.1 ../lib/libprotobuf.so -lpthread ../lib/libvtkjsoncpp-pv5.4.so.1 -Wl,-rp
ath,/opt/subflow/paraview/paraview_build/lib: -Wl,-rpath-link,/opt/subflow/paraview/paraview_build/lib^Cusr/li
b/nvidia-384/libEGL_nvidia.so.384.90 /usr/lib/nvidia-384/libEGL.so.384.90 /usr/lib/nvidia-384/libEGL.so.1 -Wl,
-rpath-link,/usr/lib/nvidia-384 /usr/lib/nvidia-384/libEGL.so /usr/lib/nvidia-384/libGL.so /usr/lib/nvidia-384
/libGLESv1_CM.so /usr/lib/nvidia-384/libGLESv2.so /usr/lib/nvidia-384/libGLX.so /usr/lib/nvidia-384/libOpenGL.
so /usr/lib/nvidia-384/libnvcuvid.so /usr/lib/nvidia-384/libnvidia-cfg.so /usr/lib/nvidia-384/libnvidia-compil
er.so /usr/lib/nvidia-384/libnvidia-encode.so /usr/lib/nvidia-384/libnvidia-fbc.so /usr/lib/nvidia-384/libnvid
ia-ifr.so /usr/lib/nvidia-384/libnvidia-ml.so 

root at paraview-6dcc64f758-9nkbc:/opt/subflow/paraview/paraview_build/CommandLineExecutables# ../../link.sh     /opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglTerminate'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglCreateWindowSurface'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglQueryString'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetProcAddress'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetError'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglCreatePbufferSurface'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglDestroySurface'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglBindAPI'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglInitialize'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglQuerySurface'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglChooseConfig'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglSwapBuffers'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglCreateContext'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetCurrentDisplay'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetDisplay'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglMakeCurrent'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglDestroyContext'
/opt/subflow/paraview/paraview_build/lib/libvtkRenderingOpenGL2-pv5.4.so.1: undefined reference to `eglGetCurrentSurface'
collect2: error: ld returned 1 exit status

Does anyone know what is going wrong here?

Thanks,

Chris


More information about the ParaView mailing list