[Interest] Linking issues with Angle and Qt 5.12.x

Federico Buti fed.buti at gmail.com
Mon May 27 14:06:06 CEST 2019


Hi Oliver.

Thanks for the reply.
At the moment our example is just "compile qnanopainter" since it's what
gave us the radically different results between 5.9.x and 5.12.x in the
first place. Just in case I've also opened an issue in qnanopainter because
something can be off there too. I remember the library had issues on Win
back in the day.

I'll try to create a decent minimal example asap and create a bug.
F.


On Mon, 27 May 2019 at 12:57, Oliver Wolff <Oliver.Wolff at qt.io> wrote:

> Hi Frederico,
>
> I am not aware of an issue with ANGLE when using MinGW. Can you create a
> bug report on http://bugreports.qt.io/ ,attach a minimal example, and
> assign it to me so that it does not get lost?
>
> Olli
>
> On 25/05/2019 17:47, Federico Buti wrote:
> > Hi all.
> >
> > We are facing a quite strange behaviour with qnanopainter
> > <https://github.com/QUItCoding/qnanopainter>.
> > Building/running the library and the examples works smoothly on Qt 5.9.8
> > and no issue is found. I guess everything was fixed there, see for
> > instance here
> > <https://github.com/QUItCoding/qnanopainter/issues/16#issue-235192684>.
> >
> > Building the code on 5.12.x results in a similar linker issue as
> > depicted in the last link. In particular we have a series of undefined
> > references as shown below:
> >
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x12b):
>
> > undefined reference to `_imp__glDeleteTextures at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b4):
>
> > undefined reference to `glDeleteShader at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d5):
>
> > undefined reference to `glDeleteBuffers at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e5):
>
> > undefined reference to `glDeleteShader at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f5):
>
> > undefined reference to `glDeleteProgram at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x988):
>
> > undefined reference to `_imp__glBindTexture at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x9a0):
>
> > undefined reference to `_imp__glPixelStorei at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x9fc):
>
> > undefined reference to `_imp__glTexSubImage2D at 36'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0xa43):
>
> > undefined reference to `_imp__glBindTexture at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1361):
>
> > undefined reference to `_imp__glDeleteTextures at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1388):
>
> > undefined reference to `_imp__glGetError at 0'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1407):
>
> > undefined reference to `_imp__glGenTextures at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x143a):
>
> > undefined reference to `_imp__glBindTexture at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1442):
>
> > undefined reference to `_imp__glPixelStorei at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x14ae):
>
> > undefined reference to `_imp__glTexImage2D at 36'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x14d7):
>
> > undefined reference to `_imp__glTexParameteri at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1638):
>
> > undefined reference to `_imp__glBindTexture at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x16b9):
>
> > undefined reference to `glGenerateMipmap at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x16fa):
>
> > undefined reference to `_imp__glTexImage2D at 36'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x171a):
>
> > undefined reference to `_imp__glTexParameteri at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x17e0):
>
> > undefined reference to `glUniform4fv at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1828):
>
> > undefined reference to `_imp__glBindTexture at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x185f):
>
> > undefined reference to `_imp__glBindTexture at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x18bb):
>
> > undefined reference to `glGetProgramInfoLog at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x192e):
>
> > undefined reference to `glGetShaderInfoLog at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x19c9):
>
> > undefined reference to `glCreateProgram at 0'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x19d7):
>
> > undefined reference to `glCreateShader at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x19e8):
>
> > undefined reference to `glCreateShader at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a19):
>
> > undefined reference to `glShaderSource at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a44):
>
> > undefined reference to `glShaderSource at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a4f):
>
> > undefined reference to `glCompileShader at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a6a):
>
> > undefined reference to `glGetShaderiv at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1a94):
>
> > undefined reference to `glCompileShader at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1aaf):
>
> > undefined reference to `glGetShaderiv at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1adb):
>
> > undefined reference to `glAttachShader at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1aea):
>
> > undefined reference to `glAttachShader at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b05):
>
> > undefined reference to `glBindAttribLocation at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b20):
>
> > undefined reference to `glBindAttribLocation at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b2b):
>
> > undefined reference to `glLinkProgram at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1b46):
>
> > undefined reference to `glGetProgramiv at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1bd9):
>
> > undefined reference to `glGetUniformLocation at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1bf1):
>
> > undefined reference to `glGetUniformLocation at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1c09):
>
> > undefined reference to `glGetUniformLocation at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1c22):
>
> > undefined reference to `glGenBuffers at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1c38):
>
> > undefined reference to `_imp__glFinish at 0'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d14):
>
> > undefined reference to `_imp__glStencilFunc at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d5f):
>
> > undefined reference to `glUseProgram at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d64):
>
> > undefined reference to `_imp__glEnable at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d86):
>
> > undefined reference to `_imp__glCullFace at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1d96):
>
> > undefined reference to `_imp__glFrontFace at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1da7):
>
> > undefined reference to `_imp__glDisable at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1dca):
>
> > undefined reference to `_imp__glColorMask at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1df7):
>
> > undefined reference to `_imp__glStencilMask at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e0c):
>
> > undefined reference to `_imp__glStencilOp at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e4c):
>
> > undefined reference to `_imp__glStencilFunc at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e5b):
>
> > undefined reference to `glActiveTexture at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1e60):
>
> > undefined reference to `_imp__glBindTexture at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1edf):
>
> > undefined reference to `glBindBuffer at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f07):
>
> > undefined reference to `glBufferData at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f16):
>
> > undefined reference to `glEnableVertexAttribArray at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f25):
>
> > undefined reference to `glEnableVertexAttribArray at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f5c):
>
> > undefined reference to `glVertexAttribPointer at 24'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1f93):
>
> > undefined reference to `glVertexAttribPointer at 24'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1fa9):
>
> > undefined reference to `glUniform1i at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1fc6):
>
> > undefined reference to `glUniform4fv at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x1fce):
>
> > undefined reference to `_imp__glDrawArrays at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2085):
>
> > undefined reference to `glBlendFuncSeparate at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2141):
>
> > undefined reference to `glStencilOpSeparate at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2168):
>
> > undefined reference to `glStencilOpSeparate at 16'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x217f):
>
> > undefined reference to `_imp__glDrawArrays at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2289):
>
> > undefined reference to `glDisableVertexAttribArray at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2298):
>
> > undefined reference to `glDisableVertexAttribArray at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x22bd):
>
> > undefined reference to `glBindBuffer at 8'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x22cc):
>
> > undefined reference to `glUseProgram at 4'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2374):
>
> > undefined reference to `_imp__glDrawArrays at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x249e):
>
> > undefined reference to `_imp__glDrawArrays at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2532):
>
> > undefined reference to `_imp__glDrawArrays at 12'
> >
> libqnanopainter.a(qnanobackendgles2.cpp.o):qnanobackendgles2.cpp:(.text+0x2843):
>
> > undefined reference to `_imp__glDrawArrays at 12'
> >
> > When we substituted the "liblibGLESv2.a" from Qt 5.12 with the one from
> > 5.9 - just to do a wild test - compilation succeeded but then we had a
> > runtime failure which was totally expected.
> >
> > The very same series of undefined references are also spotted while
> > cross-compiling with MXE and a patched Qt version to have dynamic
> > selection of the GL backend.
> >
> > What is exactly happening here? How can we proceed? What's the best way
> > to use angle when cross-compiling Qt, e.g. with MXE?
> >
> > Thanks in advance,
> > F.
> >
> >
> > _______________________________________________
> > Interest mailing list
> > Interest at qt-project.org
> > https://lists.qt-project.org/listinfo/interest
> >
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> https://lists.qt-project.org/listinfo/interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20190527/85dda46a/attachment.html>


More information about the Interest mailing list