Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
Ubuntu: "QOpenGLShaderProgram shader program is not linked"
dcortesi last edited by dcortesi
The app is written in PyQt and Qt both version 5.9. The app runs correctly on Mac OS X. (Edit: the app also runs correctly on Windows 7.) Moving the same source code to a linux system running 64-bit Ubuntu, the app displays a solid-black window and produces many multiple error sequences like:
QOpenGLShaderProgram::uniformLocation(qt_Matrix): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader shader compilation failed: ""
There is no explicit use of OpenGL in the program, it uses just standard widgets, QMainWindow, QListView, and QWebEngineView.
How do I tell it to quit trying to use OpenGL? Is there a style setting or something I can give to QApplication?
dcortesi last edited by
This problem is a specific Linux problem when the local graphics drivers are NVIDIA, but the linked libGL.so is not the NVIDIA version.
This is the Ubuntu bug that explains the issue, it is 4 years old!
People on the PyQt mailing list provided this info, and suggested a simple work-around. Add the following code early in the setup of the app:
if sys.platform.startswith( 'linux' ) : from OpenGL import GL
The GL module will import the correct (openGL.so.1) dll. Another suggested approach was to use ctypes,
import ctypes ctypes.cdll.LoadLibrary("libGL.so.1")
I did not try this. A third approach would be to find the system libGL.so and symlink it to libGL.so.1 however when I poked around the innards of Ubuntu 16 (64-bit) the number and links-between of the various libGL* files were more complicated than this simple idea would suggest so I did not try it.