BB & Qt — ICU

Сборка International Components for Unicode (ICU) для ARMv7. Используется в Qt с 5 версии.

На основе статьи Cross Compile ICU 51.2.

Идём на сайт проекта ICU. Переходим по ссылке на последнюю версию ICU4C. Там скачиваем архив исходников, под названием "gzipped tar archive for Unix and other platforms". Распаковываем в каталог /home/user/Qt/icu .

Сначала надо будет собрать ICU для текущей операционной системы. Заходим в каталог icu и делаем копию исходников:

$ cd /home/user/Qt/icu
$ cp -r source source_host
$ cd source_host

Собираем:

$ ./configure
$ make

Теперь настраиваем основной каталог исходников.

$ cd /home/user/Qt/icu/source
$ touch build.sh
chmod +x build.sh
nano build.sh

В файле пишем команды конфигурации и сборки:

#!/bin/sh

PATH=/home/user/beaglebone/gcc-linaro-arm-linux-gnueabi-4.8-2014.03_linux/bin:$PATH
export PATH
export TOOLCHAIN_TARGET_SYSTEM=arm-linux-gnueabihf
export TOOLCHAIN_INSTALL_DIRECTORY=/usr/share/icu-4c-53.1-armv7

./configure CC=$TOOLCHAIN_TARGET_SYSTEM-gcc CXX=$TOOLCHAIN_TARGET_SYSTEM-g++ CPP=$TOOLCHAIN_TARGET_SYSTEM-cpp --host=$TOOLCHAIN_TARGET_SYSTEM --prefix=$TOOLCHAIN_INSTALL_DIRECTORY --enable-shared=yes --enable-tests=no --enable-samples=no --with-cross-build=/home/user/Qt/icu/source_host

make

Сохраняем (Ctrl+O, Enter) и выходим (Ctrl+X).

Для исправления бага с загрузкой библиотеки libicudata.so:

error white loading shared libraries: libicudata.so.53: cannot open shared object file: No such file or directory

открываем файл icu/source/mh-linux и комментируем эту строку:

LDFLAGSICUDT=-nodefaultlibs -nostdlib

Решение найдено здесь. Без этого исправления ldd -v libicudata.so.53 говорит, что библиотека statically linked. А после исправления - уже обычный вывод.

Собираем и устанавливаем:

$ ./build.sh
$ sudo make install

Каталог /usr/share/icu-4c-53.1-armv7 копируем на BeagleBone.