Cross-compiling for old ARM Embedded Linux. Lookup errors: undefined symbol
(too old to reply)
Oleg Evseev
2018-11-23 21:18:31 UTC
Hi all,

I have embedded arm linux device with old 2.6 kernel and Qt-5.4 libs. But I
need Qt-5.9.5.
I was able to cross compile Qt-5.9.5 libs and can now successfully run
quick applications using updated new version of libc (and other related
libraries) .

But if I run app with "export LD_DEBUG=libs"
I see following symbol lookup errors:

for libQt5Qml.so:

/opt/device/Qt-5.9.5/lib/libQt5Qml.so.5: error: symbol lookup error:
undefined symbol: qmlmemprofile_stats (fatal)

and also the same for symbols qmlmemprofile_clear, qmlmemprofile_enable,
qmlmemprofile_disable, qmlmemprofile_push_location,
qmlmemprofile_pop_location, qmlmemprofile_save, qmlmemprofile_is_enabled

for libQt5Gui.so

/opt/device/Qt-5.9.5/lib/libQt5Gui.so.5: error: symbol lookup error:
undefined symbol: glClearDepth (fatal)

(and so on - about 1000 lines about missing opengl funcitons)

As I said regardless to those errors application works.
There are no such symbol lookup errors for applications builded against
original Qt-5.4.

Besides other flags, there are -lGLESv2 -lOpenVG -lEGL building flags.
Libs libOpenVG.so, libGLESv2.so are in related lib path and they are used
according to log.

I'm new in such crosscompiling and using multiple version of libc on the
same system. I think I missed something and didn't add all needed libs.

Thanks in advance for any help!

Just in case if it can help qt.scenegraph.general info:

qt.scenegraph.general: texture atlas dimensions:
1024x512qt.scenegraph.general: R/G/B/A Buffers: 8 8 8
8qt.scenegraph.general: Depth Buffer: 24qt.scenegraph.general:
Stencil Buffer: 8qt.scenegraph.general: Samples:
0qt.scenegraph.general: GL_VENDOR: Advanced Micro Devices,
Inc.qt.scenegraph.general: GL_RENDERER: AMD
Z430qt.scenegraph.general: GL_VERSION: OpenGL ES
2.0qt.scenegraph.general: GL_EXTENSIONS:
GL_OES_get_program_binary GL_OES_standard_derivatives
GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_element_index_uint
GL_OES_packed_depth_stencil GL_AMD_performance_monitor
GL_AMD_program_binary_Z400 GL_OES_compressed_paletted_texture
GL_OES_texture_3D GL_OES_vertex_type_10_10_10_2 GL_AMD_tiled_rendering
GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap
GL_OES_texture_half_float GL_OES_texture_npot GL_NV_fence GL_EXT_bgra
GL_OES_texture_float GL_OES_fragment_precision_high
GL_AMD_compressed_3DC_texture GL_OES_compressed_ETC1_RGB8_texture
GL_OES_EGL_image_external GL_AMD_compressed_ATC_texture GL_OES_depth24
GL_EXT_texture_filter_anisotropic GL_OES_depth_texture
GL_OES_texture_half_float_linearqt.scenegraph.general: Max Texture
Size: 2048qt.scenegraph.general: Debug context: false

Continue reading on narkive: