libicudata.so.57 not found
Unsolved
Mobile and Embedded
-
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?
-
Hi,
Yes it is, you need to have all your libraries built with the same EABI.