在 CentOS 上安装 ICU 49

在 CentOS 上安装 ICU 49

我正在尝试在 CentOS 版本 5.8 (Final) 上安装 ICU 49。我知道的唯一方法是通过源代码进行编译。

我执行以下操作:

./runConfigureICU Linux
gmake

编译结束时出现以下错误:

make[2]: Leaving directory `/root/icu/icu/source/tools/toolutil'
make[1]: Making `all' in `ctestfw'
make[2]: Entering directory `/root/icu/icu/source/tools/ctestfw'
generating dependency information for ucln_ct.c
generating dependency information for uperf.cpp
generating dependency information for datamap.cpp
generating dependency information for testdata.cpp
generating dependency information for tstdtmod.cpp
generating dependency information for ctest.c
make[2]: Leaving directory `/root/icu/icu/source/tools/ctestfw'
make[2]: Entering directory `/root/icu/icu/source/tools/ctestfw'
gcc -D_REENTRANT   -I../../common -I../../i18n -I./../toolutil -I.   -DU_ATTRIBUTE_DEPRECATED= -DT_CTEST_IMPLEMENTATION -O3 -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long   -c -DPIC -fPIC -o ctest.o ctest.c
g++ -D_REENTRANT   -I../../common -I../../i18n -I./../toolutil -I.   -DU_ATTRIBUTE_DEPRECATED= -DT_CTEST_IMPLEMENTATION -O3 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long   -c -DPIC -fPIC -o tstdtmod.o tstdtmod.cpp
g++ -D_REENTRANT   -I../../common -I../../i18n -I./../toolutil -I.   -DU_ATTRIBUTE_DEPRECATED= -DT_CTEST_IMPLEMENTATION -O3 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long   -c -DPIC -fPIC -o testdata.o testdata.cpp
g++ -D_REENTRANT   -I../../common -I../../i18n -I./../toolutil -I.   -DU_ATTRIBUTE_DEPRECATED= -DT_CTEST_IMPLEMENTATION -O3 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long   -c -DPIC -fPIC -o datamap.o datamap.cpp
g++ -D_REENTRANT   -I../../common -I../../i18n -I./../toolutil -I.   -DU_ATTRIBUTE_DEPRECATED= -DT_CTEST_IMPLEMENTATION -O3 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long   -c -DPIC -fPIC -o uperf.o uperf.cpp
gcc -D_REENTRANT   -I../../common -I../../i18n -I./../toolutil -I.   -DU_ATTRIBUTE_DEPRECATED= -DT_CTEST_IMPLEMENTATION -O3 -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long   -c -DPIC -fPIC -o ucln_ct.o ucln_ct.c
g++ -O3 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long     -shared -Wl,-Bsymbolic -Wl,-soname -Wl,libicutest.so.49 -o libicutest.so.49.1.2 ctest.o tstdtmod.o testdata.o datamap.o uperf.o ucln_ct.o -L../../lib -licutu -L../../lib -licui18n -L../../lib -licuuc -L../../stubdata -licudata -lpthread -ldl -lm
rm -f libicutest.so.49 && ln -s libicutest.so.49.1.2 libicutest.so.49
rm -f libicutest.so && ln -s libicutest.so.49.1.2 libicutest.so
make[2]: Leaving directory `/root/icu/icu/source/tools/ctestfw'
make[1]: Making `all' in `makeconv'
make[2]: Entering directory `/root/icu/icu/source/tools/makeconv'
generating dependency information for gencnvex.c
generating dependency information for genmbcs.cpp
generating dependency information for ucnvstat.c
generating dependency information for makeconv.c
make[2]: Leaving directory `/root/icu/icu/source/tools/makeconv'
make[2]: Entering directory `/root/icu/icu/source/tools/makeconv'
gcc -D_REENTRANT   -I../../common -I./../toolutil -DU_ATTRIBUTE_DEPRECATED= -O3 -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long  -c   -o makeconv.o makeconv.c
gcc -D_REENTRANT   -I../../common -I./../toolutil -DU_ATTRIBUTE_DEPRECATED= -O3 -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long  -c   -o ucnvstat.o ucnvstat.c
g++ -D_REENTRANT   -I../../common -I./../toolutil -DU_ATTRIBUTE_DEPRECATED= -O3 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long  -c   -o genmbcs.o genmbcs.cpp
gcc -D_REENTRANT   -I../../common -I./../toolutil -DU_ATTRIBUTE_DEPRECATED= -O3 -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long  -c   -o gencnvex.o gencnvex.c
g++ -O3 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long   -o ../../bin/makeconv makeconv.o ucnvstat.o genmbcs.o gencnvex.o -L../../lib -licutu -L../../lib -licui18n -L../../lib -licuuc -L../../stubdata -licudata -lpthread -ldl -lm
../../lib/libicuuc.so: undefined reference to `__sync_val_compare_and_swap_4'
../../lib/libicuuc.so: undefined reference to `__sync_add_and_fetch_4'
../../lib/libicuuc.so: undefined reference to `__sync_sub_and_fetch_4'
collect2: ld returned 1 exit status
make[2]: *** [../../bin/makeconv] Error 1
make[2]: Leaving directory `/root/icu/icu/source/tools/makeconv'
make[1]: *** [all-recursive] Error 2
make[1]: Leaving directory `/root/icu/icu/source/tools'
make: *** [all-recursive] Error 2

我在 Google 上找不到任何可以帮我的东西。我使用的icu4c-49_1_2-src.tgzhttp://site.icu-project.org/download/49

答案1

我可能有点晚了,但是我在 32 位 SLES 11 SP2 上构建 ICU 49.1.2 时遇到了完全相同的问题。

经过一些研究和下面的错误报告后,我尝试更新我的 gcc/g++ 安装。 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40134

使用 gcc/g++.46(执行“make clean”后),我能够构建库。显然,这对 OP 来说可能有点晚了,但也许其他人会从中受益。

答案2

我的建议是(当我尝试重现您的错误时)。不要。

我在一个 yum 存储库中找到了所需的库。

libicu.i386 : International Components for Unicode - libraries
libicu-devel.i386 : Development files for International Components for Unicode
libicu-doc.i386 : Documentation for International Components for Unicode

忽略那些是 i386,只是我正在使用的旧服务器。

Name       : libicu
Arch       : i386
Version    : 3.6
Release    : 5.16.1
Size       : 13 M
Repo       : installed
Summary    : International Components for Unicode - libraries
URL        : http://www.ibm.com/software/globalization/icu/
License    : X License
Description: International Components for Unicode - libraries.

我相信它位于默认的 Centos 存储库中。我建议您尝试在 yum 中搜索 libicu。

我将尝试重现从源代码构建时出现的错误。

相关内容