ICUのインストール
国際化のためのライブラリーであるICUをソースコードからインストールする。
ICUはIntlという名前でも参照されることがあり,PHPの拡張機能などで利用されている。
インストール手順
項目 | 説明 |
---|---|
配布元 | ICU – International Components for Unicode |
リポジトリー | unicode-org/icu: The new home of the ICU project source code. |
手順 | |
依存情報 | |
依存先 (必須) | Make (GNU Make) |
依存先 (任意) |
|
依存元 | PHP intl拡張機能 |
sh -eux <<-"EOT"
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
PKG=icu VER=50.2 TAG=$(echo release-$VER | sed 's/\./-/')
mkdir -p "$LOCAL/src"
cd "$LOCAL/src"
if command -v git >/dev/null; then
[ -e $PKG ] || git clone --depth 1 git://github.com/unicode-org/icu $PKG
cd $PKG
git fetch --depth 1 origin tag $TAG
git checkout -f $TAG
git clean -dfX
cd icu4c/source
else
[ -e $PKG-$VER ] || wget http://download.icu-project.org/files/${PKG}4c/$VER/${PKG}4c-${VER%.*}_${VER#*.}-src.tgz
tar -xf $PKG-$VER.*
cd $PKG-$VER
make -kj $J clean distclean || :
fi
./configure --prefix="$LOCAL/stow/$PKG-$VER"
make -j $J
make -j $J check
make -j $J install
cd "$LOCAL/stow"
echo $PKG-[0-9]* | xargs -n 1 stow --ignore=dir -D
stow --ignore=dir $PKG-$VER
EOT
日付 | バージョン | OS | 依存関係 |
---|---|---|---|
2018-07-01 | 61.1 | Ubuntu 16.04 | |
2019-05-05 | 50.2 | Ubuntu 18.04 | GNU Make 4.2.1, GCC 7.4.0 |
マニュアルだと,runConfigureICUを実行するようにある。しかし,通常のconfigureでも問題なかった。
ICUは,C言語用のAPIのICU4CとJava用のICU4Jがあり,ファイル名やディレクトリー構成などが他のパッケージと若干異なるので注意する。
make checkの失敗
ICU 50.2以外の64.2までのバージョンだと,make checkが失敗してしまう。
g++ -O3 -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long -std=c++11 -L/home/senooken/.local/lib64 -L/home/senooken/.local/lib -L/home/senooken/.local/opt/lib64 -L/home/senooken/.local/opt/lib -o letest letsutil.o cmaps.o FontTableCache.o SimpleFontInstance.o PortableFontInstance.o letest.o cfonts.o xmlreader.o cletest.o -L../../lib -liculx -L../../lib -licuuc -L../../stubdata -licudata -L../../lib -licui18n -L../../tools/ctestfw -licutest -L../../lib -licutu -lpthread -ldl -lm -licu-le-hb SimpleFontInstance.o: In function `SimpleFontInstance::SimpleFontInstance(float, LEErrorCode&)': SimpleFontInstance.cpp:(.text+0x2c): undefined reference to `icu_64::LEFontInstance::yUnitsToPoints(float) const'
60.3は失敗の内容が異なり,惜しかった。
------------- | *** FAILING TEST SUMMARY FOR: letest /layout/DataDrivenTest | *** END FAILING TEST SUMMARY FOR: letest ---------------
原因がよくわからない。わかり次第情報を追記する。
“ICUのインストール” に対して2件のコメントがあります。