【编译安装icu4c-77_1】
[方法1: 在板子上本地编译]
wget
https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz --no-check-certificate
tar xf icu4c-77_1-src.tgz
cd icu/source
./configure
swapon /root/swapfile
make
make install
swapoff /root/swapfile
cd ../..
编译了3个多小时,编译的最后阶段很耗内存,swap虚拟内存一定要开大一点。
[root
@luckfox-rv1106 ~/test]# free -h
total used free shared buff/cache available
Mem: 214.9M 204.7M 3.0M 128.0K 7.2M 3.8M
Swap: 2.0G 695.3M 1.3G
[root
@luckfox-rv1106 ~/test]#
如果报下面的错误,说明编译过程中写文件出了问题。
LD_LIBRARY_PATH=../../lib:../../stubdata:../../tools/ctestfw:$LD_LIBRARY_PATH ../../bin/genrb -e UTF-8 -s resources -d uconvmsg root.txt
../../bin/genrb: error while loading shared libraries: ../../lib/libicudata.so.77: internal error
解决办法:执行rm lib/*(只删库文件,不删o文件。注意lib前没有斜杠,不要删到系统目录里面去了),然后重新make,再make install,就成功了。
[方法2: 在电脑上交叉编译]
这个库在板子上本地编译至少需要900MB的内存,这已经远远超出了RV1106G3片内的内存大小,而且编译完至少要花3个小时的时间。
由于这个库没有依赖项,可以在电脑上交叉编译。
export PATH=$PATH:/home/oct1158/Downloads/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/bin
wget
https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgztar xf icu4c-77_1-src.tgz
cd icu
mkdir _build
cd _build
../source/configure
make
mkdir ../_build2
cd ../_build2
../source/configure --host=arm-none-linux-gnueabihf --with-cross-build=$(pwd)/../_build
make
make install DESTDIR=$(pwd)/_install
cd _install
sudo chown -R root:root usr
tar czf icu4c-77_1-binary.tar.gz usr
mv icu4c-77_1-binary.tar.gz /var/www/html/oct1158
交叉编译和本地编译得到的libicudata.so.77.1库文件大小是一样的,都是31900572字节(30.4MB)。但其他5个库大小不一样,有细微差异。