Собираю icu-57 для ODROID-C1 (Amlogic S805 CPU), использую gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux toolchain на x64 хосте.
Код: Выделить всё
$ mkdir /tmp/icu_host && cd /tmp/icu_host
$ /tmp/icu/source/runConfigureICU Linux --with-library-bits=32
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
$ mkdir /tmp/icu_target && 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
.............
$ make
Проверяю полученный файл
Код: Выделить всё
$ 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
Но qt5 не находит libicudata.so.57.1.
Запустил objdump и увидел нечто странное:
Код: Выделить всё
$ 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]
$ 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]
Вопрос - почему icudata собирается как soft-float?
Спасибо.