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



  • Hello,
    Which version of tinkeros and qt are you using?



  • 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 board

    Part 1 : Make tinker board ready for compilation:

    1. Prepare microSD card for tinker board and boot-up
    2. Change default linaro password
    3. Connect board to internet and host machine and save tinker board ip-address
    4. Update TinkerOS : sudo apt update
    5. Upgrade TinkerOS : sudo apt upgrade
    6. Install rsync: sudo apt install rsync
    7. Install following packages in tinkerOS
    8. Enable SSH in tinkerOS
      a. Click on start menu
      b. Select Preferences
      c. Select Tinker Board Configurations
      d. Select interfaces tab
      e. Enable ssh
    9. 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
    10. Create destination directory for Qt5
      a. sudo mkdir /usr/local/qt5
      b. sudo chown linaro:linaro /usr/local/qt5
    11. Give root password
      a. sudo passwd root
    12. Reboot
      a. sudo reboot
      Part 2: Ubuntu VM for Qt Compilation
    13. run virtualBox and setup ubuntu 20.04 give maximum resources as you can and set username as dev
    14. 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
    15. Make directory for Qt cross compile for tinker board
      a. mkdir /opt/qt5tinker
      b. chown dev:dev /opt/qt5tinker
      c. cd /opt/qt5tinker
    16. 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
    17. Untar linaro toolchain
      a. tar xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
    18. 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
    19. 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
    20. 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
    21. Untar qt source code
      a. tar xf qt-everywhere-src-5.14.0.tar.xz
    22. 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
    23. Make sysroot directory
      a. mkdir /opt/qt5tinker/sysroot
      b. chown dev:dev /opt/qt5tinker/sysroot
    24. 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
    25. 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
    26. 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
    27. 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
    28. 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
    29. 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.
    30. 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
    31. 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

    1. under Tools->Options->Kits add new kit
    2. set name : tinker
    3. set Device type : Generic Linux Device
    4. under Tools->Options->kits->QtVesrions add by path = /opt/qt5tinker/sysroot/usr/local/qt5/bin/qmake
    5. 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
    6. 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
    7. 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)
    8. 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
    9. Go to kits and set device for tinker kit to Tinker Board
    10. For Debug
      a. on host PC : sudo apt-get install gdb-multiarch
      b. on tinker board : sudo apt-get install gdbserver
    11. 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
    12. 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}

Log in to reply