libicudata.so.57 not found



  • Hello!
    I build Qt-5.5.1 for ODROID-C1 board (Amlogic S805 CPU) with icu-57 support, gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux toolchain.
    Unfortunately qt can't found libicudata.so.57.

    odroid@odroid:/usr/local/Qt-5.5.1/examples/gui/openglwindow$ LD_LIBRARY_PATH=/tmp/lib/usr/lib:$LD_LIBRARY_PATH ldd openglwindow
            libpng15.so.15 => /tmp/lib/usr/lib/libpng15.so.15 (0xb6efe000)
            libz.so.1 => /tmp/lib/usr/lib/libz.so.1 (0xb6edc000)
            libpcre16.so.0 => /tmp/lib/usr/lib/libpcre16.so.0 (0xb6e9f000)
            libicudata.so.57 => not found
            libicui18n.so.57 => /tmp/lib/usr/lib/libicui18n.so.57 (0xb6cfb000)
            libicuuc.so.57 => /tmp/lib/usr/lib/libicuuc.so.57 (0xb6bd8000)
            libQt5Gui.so.5 => /usr/local/Qt-5.5.1/lib/libQt5Gui.so.5 (0xb6880000)
            libQt5Core.so.5 => /usr/local/Qt-5.5.1/lib/libQt5Core.so.5 (0xb652d000)
            libGLESv2.so => /tmp/lib/usr/lib/libGLESv2.so (0xb6414000)
            libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb63f1000)
            libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb633a000)
            libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb62c6000)
            libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb629d000)
            libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb61ad000)
            libicudata.so.57 => not found
            libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb619a000)
            libicudata.so.57 => not found
            libicudata.so.57 => not found
            libicudata.so.57 => not found
            librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb6184000)
            /lib/ld-linux-armhf.so.3 (0xb6f34000)
    

    Library directory contained libicudata:

    odroid@odroid:/usr/local/Qt-5.5.1/examples/gui/openglwindow$ ls -l /tmp/lib/usr/lib/libicudata*
    lrwxrwxrwx 1 odroid odroid       18 May 17  2016 /tmp/lib/usr/lib/libicudata.so -> libicudata.so.57.1
    lrwxrwxrwx 1 odroid odroid       18 May 17  2016 /tmp/lib/usr/lib/libicudata.so.57 -> libicudata.so.57.1
    -rwxr-xr-x 1 odroid odroid 25670925 May 17  2016 /tmp/lib/usr/lib/libicudata.so.57.1
    

    Follow my steps for build icu on my x64 host:

    $ cd /tmp/icu_host/
    $ /tmp/s805/icu/source/runConfigureICU Linux --with-library-bits=32
    export CPP= CC= CXX= CPPFLAGS= CFLAGS=-O3  CXXFLAGS=-O3  LDFLAGS= MAKE=
    Running ./configure  --with-library-bits=32 for Linux using the clang or else GNU C++ compiler
    
    checking for ICU version numbers... release 57.1, library 57.1, unicode version 8.0
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    ................
    checking size of void *... 8
    checking whether runnable 64 bit binaries are built by default... yes
    checking how to build 32-bit executables... yes
    checking whether runnable 32-bit binaries are being built ... yes
    checking which Makefile fragment to use for x86_64-unknown-linux-gnu... mh-linux
    checking for floor in -lm... yes
    ...............
    $ make
    $ file lib/libicudata.so.57.1
    lib/libicudata.so.57.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=1515b7003e91bcef10100ce3965bfd321e64d7c7, not stripped
    $ cd /tmp/icu_target
    $ CC=${CROSS_PREFIX}-gcc CXX=${CROSS_PREFIX}-g++ /tmp/s805/icu/source/configure --prefix=/usr --host=${CROSS_PREFIX} --with-cross-build=/tmp/icu_host
    checking for ICU version numbers... release 57.1, library 57.1, unicode version 8.0
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... arm-unknown-linux-gnueabihf
    ...............
    checking for unistd.h... yes
    checking size of void *... 4
    checking whether runnable 64 bit binaries are built by default... no
    checking which Makefile fragment to use for arm-unknown-linux-gnueabihf... mh-linux
    .............
    $ file lib/libicudata.so.57.1 
    lib/libicudata.so.57.1: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=fbaa7f63ac1c7e0ad86786147eed2fefcd55a0a2, not stripped
    

    SHA1 sum:

    host$ sha1sum lib/libicudata.so.57.1 
    88906c14f4aeaaac279fd7541260e0d963c56a5d  lib/libicudata.so.57.1
    odroid@odroid:/usr/local/Qt-5.5.1/examples/gui/openglwindow$ sha1sum /tmp/lib/usr/lib/libicudata.so.57.1
    88906c14f4aeaaac279fd7541260e0d963c56a5d  /tmp/lib/usr/lib/libicudata.so.57.1
    

    Why qt not found libicudata.so.57 and how can I solve this problem?
    Thank you and excuse my bad english.



  • # arm-linux-gnueabihf-objdump -p lib/libicudata.so.57.1 
    
    lib/libicudata.so.57.1:     file format elf32-littlearm
    
    Program Header:
        LOAD off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**16
             filesz 0x0187b040 memsz 0x0187b040 flags r--
        LOAD off    0x0187b040 vaddr 0x0188b040 paddr 0x0188b040 align 2**16
             filesz 0x00000074 memsz 0x00000074 flags rw-
     DYNAMIC off    0x0187b040 vaddr 0x0188b040 paddr 0x0188b040 align 2**2
             filesz 0x00000068 memsz 0x00000068 flags rw-
        NOTE off    0x000000d4 vaddr 0x000000d4 paddr 0x000000d4 align 2**2
             filesz 0x00000024 memsz 0x00000024 flags r--
       STACK off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**4
             filesz 0x00000000 memsz 0x00000000 flags rw-
    
    Dynamic Section:
      SONAME               libicudata.so.57
      SYMBOLIC             0x00000000
      HASH                 0x000000f8
      STRTAB               0x000001d4
      SYMTAB               0x00000134
      STRSZ                0x00000058
      SYMENT               0x00000010
    private flags = 5000200: [Version5 EABI] [soft-float ABI]
    
    # arm-linux-gnueabihf-objdump -p lib/libicui18n.so.57.1 
    
    lib/libicui18n.so.57.1:     file format elf32-littlearm
    
    Program Header:
    0x70000001 off    0x00217c94 vaddr 0x00217c94 paddr 0x00217c94 align 2**2
             filesz 0x0000ad38 memsz 0x0000ad38 flags r--
        LOAD off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**16
             filesz 0x002229d0 memsz 0x002229d0 flags r-x
        LOAD off    0x00223000 vaddr 0x00233000 paddr 0x00233000 align 2**16
             filesz 0x00008624 memsz 0x00008ca0 flags rw-
     DYNAMIC off    0x0022a198 vaddr 0x0023a198 paddr 0x0023a198 align 2**2
             filesz 0x00000128 memsz 0x00000128 flags rw-
        NOTE off    0x000000f4 vaddr 0x000000f4 paddr 0x000000f4 align 2**2
             filesz 0x00000024 memsz 0x00000024 flags r--
       STACK off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**4
             filesz 0x00000000 memsz 0x00000000 flags rw-
    
    Dynamic Section:
      NEEDED               libicuuc.so.57
      NEEDED               libicudata.so.57
      NEEDED               libpthread.so.0
      NEEDED               libdl.so.2
      NEEDED               libstdc++.so.6
      NEEDED               libm.so.6
      NEEDED               libgcc_s.so.1
      NEEDED               libc.so.6
      SONAME               libicui18n.so.57
      SYMBOLIC             0x00000000
      INIT                 0x000bd140
      FINI                 0x001e4a84
      INIT_ARRAY           0x00233000
      INIT_ARRAYSZ         0x00000014
      FINI_ARRAY           0x00233014
      FINI_ARRAYSZ         0x00000004
      HASH                 0x00000118
      STRTAB               0x00036e9c
      SYMTAB               0x0001173c
      STRSZ                0x00074d4d
      SYMENT               0x00000010
      PLTGOT               0x0023a2c0
      PLTRELSZ             0x00001258
      PLTREL               0x00000011
      JMPREL               0x000bbee8
      REL                  0x000b0788
      RELSZ                0x0000b760
      RELENT               0x00000008
      VERNEED              0x000b06d8
      VERNEEDNUM           0x00000004
      VERSYM               0x000abbea
      RELCOUNT             0x00001312
    
    Version References:
      required from libc.so.6:
        0x0d696914 0x00 05 GLIBC_2.4
      required from libstdc++.so.6:
        0x0bafd178 0x00 08 CXXABI_1.3.8
        0x08922974 0x00 07 GLIBCXX_3.4
        0x056bafd3 0x00 06 CXXABI_1.3
        0x0849afa3 0x00 04 CXXABI_ARM_1.3.3
      required from libgcc_s.so.1:
        0x0b792655 0x00 03 GCC_3.5
      required from libm.so.6:
        0x0d696914 0x00 02 GLIBC_2.4
    private flags = 5000402: [Version5 EABI] [hard-float ABI] [has entry point]
    

    Why icudata build as soft-float, may be problem in this?


  • Lifetime Qt Champion

    Hi,

    Yes it is, you need to have all your libraries built with the same EABI.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.