Can't build Qt for Tinkerboard?
-
Hi,
I like many others are trying build qt for asus tinker board according to this qt blog post:
https://blog.qt.io/blog/2017/05/03/qt-git-tinkerboard-wayland/I have spent quite some time going over this with no results. As the guide cross references another guide (https://wiki.qt.io/RaspberryPi2EGLFS) it could become easy to make a mistake. To help I have included a short guide of what I've done.
Loading QT on to Asus Tinker http://blog.qt.io/blog/2017/05/03/qt-git-tinkerboard-wayland/#comments https://wiki.qt.io/RaspberryPi2EGLFS Download latest Cross-compiler for x64 https://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/arm-linux-gnueabihf/ Extract and rename to 'toolchain' and place into /tinker folder Download latest “wayland” variant from the Firefly RK3288 section https://developer.arm.com/products/software/mali-drivers/user-space [on Tinker] copy EGL/GLES/GBM/wayland-egl libraries to /usr/lib/arm-linux-gnueabihf. 1)[on Tinker] Install a bunch of development files (for simplicity we use build-dep, not everything is really needed, but it is easier this way). A- Disable auto-starting X Command = sudo systemctl set-default multi-user.target or systemctl set-default graphical.target (to restore GUI) 1- Edit sources list in /etc/apt/sources.list with use of your favorite editor (nano / vi) and uncomment the 'deb-src' line: Command = sudo nano /etc/apt/sources.list 2- Update your system and install required libraries: Command = sudo apt-get update Command = sudo apt-get build-dep qt4-x11 libqt5gui5 wayland weston. 3- Prepare our target directory Command = sudo mkdir /usr/local/qt5 Command = sudo chown linaro:linaro /usr/local/qt5 4- Give Root Password Command = sudo passwd root Command = Password Command = Password 2)[on Host] Create a sysroot on the host: Command = rsync -avz linaro@192.168.0.48:/lib ~/tinker/sysroot Command = rsync -avz linaro@192.168.0.48:/usr/include ~/tinker/sysroot/usr Command = rsync -avz linaro@192.168.0.48:/usr/lib ~/tinker/sysroot/usr 3)[on Host] Make all symlinks relative: Command = cd ~/tinker Command = wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py Command = chmod +x sysroot-relativelinks.py Command = ./sysroot-relativelinks.py sysroot 4) [on Host] Configure with -device linux-tinkerboard-g++: Command = git clone git://code.qt.io/qt/qtbase.git -b dev //or Command = git clone git://code.qt.io/qt/qtbase.git -b 5.10 Command = cd qtbase Command = ./configure -release -opengl es2 -nomake examples -nomake tests -opensource -confirm-license -v \ -device tinkerboard -device-option CROSS_COMPILE=~/tinker/toolchain/bin/arm-linux-gnueabihf- \ -sysroot ~/tinker/sysroot -prefix /usr/local/qt5 -extprefix ~/tinker/qt5 -hostprefix ~/tinker/qt5-host Command = make Command = make install 5)[on Host] rsyn to tinker return to /tinker Command = rsync -avz qt5 linaro@192.168.0.48:/usr/local 6)[on Host] Set up QT device and Kit.
After setting up Qt and creating the device and kit when I build the project I get 200+ errors
/home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libpng16.so.16, needed by /home/linaro/tinker/qt5/lib/libQt5Gui.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libharfbuzz.so.0, needed by /home/linaro/tinker/qt5/lib/libQt5Gui.so, not found (try using -rpath or -rpath-link) Makefile:148: recipe for target 'Test' failed /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libz.so.1, needed by /home/linaro/tinker/qt5/lib/libQt5Gui.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libicui18n.so.57, needed by /home/linaro/tinker/qt5/lib/libQt5Core.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libicuuc.so.57, needed by /home/linaro/tinker/qt5/lib/libQt5Core.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libicudata.so.57, needed by /home/linaro/tinker/qt5/lib/libQt5Core.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libdouble-conversion.so.1, needed by /home/linaro/tinker/qt5/lib/libQt5Core.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libdl.so.2, needed by /home/linaro/tinker/qt5/lib/libQt5Core.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libgthread-2.0.so.0, needed by /home/linaro/tinker/qt5/lib/libQt5Core.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libglib-2.0.so.0, needed by /home/linaro/tinker/qt5/lib/libQt5Core.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: librt.so.1, needed by /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libwayland-server.so.0, needed by /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libwayland-client.so.0, needed by /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/toolchain/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libdrm.so.2, needed by /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so, not found (try using -rpath or -rpath-link) /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_openTimeZones_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_source_destroy' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `clock_gettime@GLIBC_2.4' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_set_nominal_glyph_func' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `dlopen@GLIBC_2.4' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `dlsym@GLIBC_2.4' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_create_read_struct@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_set_mirroring_func' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_interlace_handling@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_source_set_can_recurse' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_set_implementation' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `crc32' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_instance_of' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_IHDR@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_face_destroy' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_source_set_priority' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_set_general_category_func' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_image_width@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_io_ptr@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_setSubstChars_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_blob_create' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_create' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_buffer_interface' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_create' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_destroy' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_proxy_marshal_constructor' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_countAvailable_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_compareNames_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_openCountryTimeZones_57' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_event_queue_destroy' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_oFFs@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_fromUnicode_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_new' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_set_eastasian_width_func' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_blob_get_empty' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_flush' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_source_remove_poll' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_getAlias_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `inflateInit2_' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_longjmp_fn@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_registry_interface' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_set_glyph_h_advance_func' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_get_glyph_positions' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_get_glyph_infos' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_gray_to_rgb@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_callback_interface' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucol_open_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_PLTE@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `drmFree' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_destroy' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_compression_level@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_destroy' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_dispatch_queue_pending' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_is_immutable' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `dlerror@GLIBC_2.4' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_create' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_text@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_source_unref' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_add_utf16' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_face_is_immutable' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_set_font_h_extents_func' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_gAMA@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_filler@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_bgr@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_set_glyph_contour_point_func' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_setMillis_57' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `drmGetMagic' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_get_client' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_face_set_index' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_valid@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `uenum_next_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_getDSTSavings_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucol_close_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_inDaylightTime_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_write_rows@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_set_decompose_func' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_clone_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `dlclose@GLIBC_2.4' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_default' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_set_ppem' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_post_error' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_toUnicode_57' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `drmSetInterfaceVersion' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_face_create_for_tables' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_PLTE@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucol_setAttribute_57' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_disconnect' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_sig_bytes@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_create' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_set_segment_properties' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_write_chunk@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_get_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_open_57' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_client_post_no_memory' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_get_fd' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucol_strcoll_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_pHYs@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `inflate' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_close_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_set_decompose_compatibility_func' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_prepare_read_queue' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_destroy_read_struct@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_read_events' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_getTimeZoneDisplayName_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_open_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `compress2' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_IHDR@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_proxy_add_listener' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_set_combining_class_func' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_set_funcs' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_guess_segment_properties' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_x_pixels_per_meter@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_clear_contents' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_read_row@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_global_create' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_source_new' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_iteration' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_post_event' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_reverse' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_expand@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `u_errorName_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_getDefaultName_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_option@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_set_flags' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_set_scale' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_allocation_successful' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_pending' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_pre_allocate' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_face_set_upem' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_set_variation_glyph_func' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `double_conversion::StringToDoubleConverter::StringToDouble(char const*, int, int*) const' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `deflateInit2_' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_tRNS@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `u_strToLower_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `uenum_close_57' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_global_destroy' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_set_user_data' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_error_fn@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_get_user_data' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_ot_layout_table_find_script' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_write_info@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_ot_tags_from_script' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_countAliases_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `deflateInit_' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_set_unicode_funcs' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_create_queue' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_destroy' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_source_add_poll' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_resource_set_user_data' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_shape_full' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_connect' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_cancel_read' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_get_user_data' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `drmAuthMagic' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_set_compose_func' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_client_get_display' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_destroy' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_proxy_marshal_constructor_versioned' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_getAvailableName_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_packing@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_wakeup' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `u_strToUpper_57' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `drmGetBusid' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_oFFs@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_read_fn@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_close_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_create_info_struct@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_read_end@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_openTimeZoneIDEnumeration_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_read_update_info@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_get_length' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `deflate' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_write_image@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_make_immutable' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `uncompress' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_push_thread_default' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_y_pixels_per_meter@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_write_end@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `drmOpen' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_gamma@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucal_getDefaultTimeZone_57' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_image_height@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `deflateEnd' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_set_glyph_extents_func' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_display_get_error' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_create_write_struct@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_ref' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_read_image@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_invert_mono@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_unicode_funcs_set_script_func' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `compress' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_read_info@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_buffer_create' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_write_fn@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_proxy_marshal' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_get_channels@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_tRNS@PNG16_0' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_proxy_destroy' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_gAMA@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `inflateEnd' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_source_attach' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_destroy_write_struct@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_error@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_pop_thread_default' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `hb_font_funcs_set_glyph_h_kerning_func' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_packswap@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_getStandardName_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucol_getSortKey_57' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `double_conversion::DoubleToStringConverter::DoubleToAscii(double, double_conversion::DoubleToStringConverter::DtoaMode, int, char*, int, bool*, int*, int*)' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_text@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Gui.so: undefined reference to `png_set_strip_16@PNG16_0' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `g_main_context_unref' /home/linaro/tinker/qt5/lib/libQt5Core.so: undefined reference to `ucnv_getMaxCharSize_57' /home/linaro/tinker/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so: undefined reference to `wl_proxy_set_queue' collect2: error: ld returned 1 exit status make: *** [Test] Error 1
I have also attached my QT set-up:
Debuggers: /usr/bin/gdb-multiarch Compliers: C++ = /home/linaro/tinker/toolchain/bin/arm-linux-gnueabihf-g++ C = /home/linaro/tinker/toolchain/bin/arm-linux-gnueabihf-gcc QT Versions: Qmake = /home/linaro/tinker/qt5-host/bin/qmake Kits: Sysroot = /home/linaro/tinker/sysroot Enviroment = LD_LIBRARY_PATH = /usr/lib/arm-linux-gnueabihf
If someone could confirm if this is a problem with my hybrid guide or I have missed something important please tell me as I would like to include this into another blog or yours to help others.
Thank you for your time.
Kind regards
-
I think, the best option to bundle linux+qt on tinkerboard is to use Yocto with meta-qt5
-
I agree with you. i ran into exactly same problem you mentioned in your post.
Can you please tell me your steps through Yocto Qt?
because there are some tutorials on rock-chip website for (rk3288) but i don't know if its compatible with tinker board.
Thanks. -
BTW.
I could finally fix the problem by adding "DISTRO_OPTS += deb-multi-arch" to qmake.conf in qtbase/mkspecs/devices/linux-tinkerboard-g++# # qmake configuration for the Asus Tinkerboard (Rockchip RK3288, Cortex-A17, Mali-T764) # # This configuration targets eglfs via DRM/KMS and Wayland. DISTRO_OPTS += deb-multi-arch include(../common/linux_device_pre.conf) QMAKE_LIBS_EGL += -lEGL QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL QMAKE_LIBS_OPENVG += -lOpenVG -lEGL DISTRO_OPTS += hard-float COMPILER_FLAGS += -mtune=cortex-a17 -march=armv7-a -mfpu=neon-vfpv4 # Preferred eglfs backend EGLFS_DEVICE_INTEGRATION = eglfs_kms include(../common/linux_arm_device_post.conf) load(qt_config)
-
Qt 5.14 cross compile for Asus tinker board
Part 1 : Make tinker board ready for compilation
Part 2 : Ubuntu VM for Qt Compilation
Part 3 : Qt Creator setup for build and debug project and run on target tinker boardPart 1 : Make tinker board ready for compilation:
- Prepare microSD card for tinker board and boot-up
- Change default linaro password
- Connect board to internet and host machine and save tinker board ip-address
- Update TinkerOS : sudo apt update
- Upgrade TinkerOS : sudo apt upgrade
- Install rsync: sudo apt install rsync
- Install following packages in tinkerOS
- Enable SSH in tinkerOS
a. Click on start menu
b. Select Preferences
c. Select Tinker Board Configurations
d. Select interfaces tab
e. Enable ssh - Install dependency packages
a. sudo apt-get install qt5-qmake libqt5gui5 weston
b. sudo apt-get install libudev-dev libinput-dev libmtdev-dev libjpeg-dev libfontconfig1-dev
c. sudo apt-get install libssl-dev libdbus-1-dev libglib2.0-dev libegl1-mesa-dev libgbm-dev libgles2-mesa-dev mesa-common-dev
d. sudo apt-get install libvpx-dev libsrtp0-dev libsnappy-dev libnss3-dev
e. sudo apt-get install "^libxcb.*"
f. sudo apt-get install libfreetype6-dev libicu-dev libsqlite3-dev libxslt1-dev libavformat-dev libswscale-dev
g. sudo apt-get install libx11-dev libglib2.0-dev
h. sudo apt-get install libasound2-dev libpulse-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-alsa
i. sudo apt-get install freetds-dev libsqlite0-dev libpq-dev libiodbc2-dev firebird-dev libjpeg-dev libgst-dev libxext-dev libxcb1 libxcb1-dev libx11-xcb1
j. sudo apt-get install libxcb-sync1 libxcb-sync-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev
k. sudo apt-get install libxcb-glx0-dev libxi-dev libdrm-dev libssl-dev libxcb-xinerama0 libxcb-xinerama0-dev
l. sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libfontconfig1-dev
m. sudo apt-get install libxss-dev libpci-dev libcap-dev libsrtp0-dev libxrandr-dev libnss3-dev libdirectfb-dev libaudio-dev - Create destination directory for Qt5
a. sudo mkdir /usr/local/qt5
b. sudo chown linaro:linaro /usr/local/qt5 - Give root password
a. sudo passwd root - Reboot
a. sudo reboot
Part 2: Ubuntu VM for Qt Compilation - run virtualBox and setup ubuntu 20.04 give maximum resources as you can and set username as dev
- update ubuntu and install compile components
a. sudo apt-get update
b. sudo apt-get upgrade
c. sudo apt-get install gcc git bison python gpeft pkg-config build-essential
d. sudo apt-get libclang-dev - Make directory for Qt cross compile for tinker board
a. mkdir /opt/qt5tinker
b. chown dev:dev /opt/qt5tinker
c. cd /opt/qt5tinker - Download linaro toolchain, if you have already downloaded copy toolchain at directory
a. Search on google : linaro toolchain binaries by time of writing this document link is https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
b. You can get it by wget https://releases.linaro.org/components/toolchain/…Above url
c. This file gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz is already presented alongside this document - Untar linaro toolchain
a. tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz - Export path of linaro tool chain
a. export PATH=$PATH: /opt/qt5tinker/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin - Update bashrc add export command at the end of bashrc file
a. nano ~/.bashrc
b. go to last line and paste : export PATH=$PATH: /opt/qt5tinker/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin
c. save and exit - Download qt official release source code
a. Search on google : download qt official release for qt5.14 current link is : https://download.qt.io/archive/qt/5.14/5.14.0/single/qt-everywhere-src-5.14.0.tar.xz
b. wget https://download.qt.io/archive/qt/5.14/5.14.0/single/qt-everywhere-src-5.14.0.tar.xz - Untar qt source code
a. tar xf qt-everywhere-src-5.14.0.tar.xz - Update tinker board config file
a. nano /opt/qt5tinker/qt-everywhere-src-5.14.0/qtbase/mkspecs/devices/linux-tinkerboard-g++/qmake.conf
b. add DISTRO_OPTS += deb-multi-arch to this file
c. save and exit - Make sysroot directory
a. mkdir /opt/qt5tinker/sysroot
b. chown dev:dev /opt/qt5tinker/sysroot - Make sure tinker-board and pc are connected and you can ping each other
a. ping tinkerboardIP
Note : tinkerboardIP is ip address of eth0 in tinkerboard - Use rsync to sync tinker board /lib directory with sysroot directory
a. rsync -avz linaro@tinkerboardIP:/lib sysroot
b. accept SHA256 fingerprint : type yes
c. type linaro password you have setted at part 1 of this tutorial - Use rsync to sync tinker board /usr/lib directory with sysroot directory
a. rsync -avz linaro@tinkerboardIP:/usr/lib sysroot/usr
b. rsync -avz linaro@tinkerboardIP:/usr/include sysroot/usr - Make all symlinks relative:
a. cd /opt/qt5tinker
b. wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
c. chmod +x sysroot-relativelinks.py
d. ./sysroot-relativelinks.py sysroot - Make build directory
a. cd /opt/qt5tinker
b. mkdir qt5build
c. cd qt5build
d. ../qt-everywhere-src-5.14.0/configure -release -opengl es2 -nomake examples -nomake tests -opensource -confirm-license -v -device tinkerboard -device-option CROSS_COMPILE=/opt/qt5tinker/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /opt/qt5tinker/sysroot -prefix /usr/local/qt5 - Qt5.14 is about to compile after a while you should see results like below image which show components that are available and ready to compile by (yes/no) item.
- Make and install
a. make -j4
Note: this takes long time depend on the system resources, 4 is number of CPU cores.
b. make install - Use rsync to sync /opt/qt5tinker/sysroot/usr/local with tinker board /usr/local
a. rsync -avz /opt/qt5tinker/sysroot/usr/local linaro@tinkerboardIP:/usr/local
b. type linaro pass and enter
Part 3 : Qt Creator setup for build and debug project and run on target tinker board
- under Tools->Options->Kits add new kit
- set name : tinker
- set Device type : Generic Linux Device
- under Tools->Options->kits->QtVesrions add by path = /opt/qt5tinker/sysroot/usr/local/qt5/bin/qmake
- under Tools->Options->Kits->Compilers
a. add->GCC->C
b. name gcc_tinker
c. browse to : /opt/qt5tinker/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
d. set ABI to : custom,arm,linux,generic,elf,32bit - under Tools->Options->Kits->Compilers
a. add->GCC->C++
b. name g++_tinker
c. browse to : /opt/qt5tinker/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
d. set ABI to : custom,arm,linux,generic,elf,32bit - under Tools->Options->Kits
a. select tinker
b. under compiler select for c select GCC_Tinker and for c++ select G++_Tinker
c. set Qt version : At 5.14 (tinker) - under Tools->Options->Devices
a. add
b. Generic Linux Device
c. Set name : Tinker board
d. Set ip address of tinker board and user name
e. Next next finished
f. Under type specific set authentication type to default - Go to kits and set device for tinker kit to Tinker Board
- For Debug
a. on host PC : sudo apt-get install gdb-multiarch
b. on tinker board : sudo apt-get install gdbserver - under Tools->Options->Kits->Debugger
a. add debugger and set name tinker debugger
b. set path to : /usr/bin/gdb-multiarch
c. under kits->tinker set tinker debugger as debugger - For each project set environment variables as follow
a. In Qt Creator click on Projects and choose run under Build & run panel
b. Click on details of run Environment add click on Add
c. Add following variable to system environment as follow
d. {DISPLAY, :0.0} , {QT_QPA_PLATFORMTHEME, qt5ct}, {XAUTHORITY, /home/linaro/.Xauthority}, {XDG_SESSION_TYPE, x11}