2012-03-20 65 views
0

宣佈在試圖使用Android NDKv7b編譯ICU49,我跑進了以下內容:編譯ICU的Android:__timezone」不是在這個範圍內

/home/tim/icu49/icu/source/common/putil.cpp: In function 'int32_t uprv_timezone_49()': 
/home/tim/icu49/icu/source/common/putil.cpp:637: error: '__timezone' was not declared in this scope 
/home/tim/icu49/icu/source/common/putil.cpp: At global scope: 
/home/tim/icu49/icu/source/common/putil.cpp:2253: error: expected constructor, destructor, or type conversion before '*' token 
使用

export ANDROIDVER=8 
export AR=/usr/bin/ar 
export BASE=/home/tim/icu49 
export HOST_ICU=$BASE/icu 
export ICU_CROSS_BUILD=$BASE/icu-linux 
export NDK_ROOT=$BASE/android-ndk-r7b 
export CPPFLAGS="-I$NDK_ROOT/platforms/android-$ANDROIDVER/arch-arm/usr/include/ -O3 -fno-short-wchar -DU_USING_ICU_NAMESPACE=0 -DU_GNUC_UTF16_STRING=0 -fno-short-enums -DU_HAVE_NL_LANGINFO_CODESET=0 -D__STDC_INT64__" 
export LDFLAGS="-lc -Wl,-rpath-link=$NDK_ROOT/platforms/android-$ANDROIDVER/arch-arm/usr/lib/ -L$NDK_ROOT/platforms/android-$ANDROIDVER/arch-arm/usr/lib/" 

export OLDPATH=$PATH 
export PATH=/home/tim/icu49/api$ANDROIDVER/bin:$PATH 

$NDK_ROOT/build/tools/make-standalone-toolchain.sh --platform=android-$ANDROIDVER --install-dir=$BASE/api$ANDROIDVER 

$HOST_ICU/source/configure --with-cross-build=$ICU_CROSS_BUILD --enable-extras=no --enable-strict=no -enable-static --enable-shared=no --enable-tests=no --enable-samples=no --enable-dyload=no --enable-tools=no --host=arm-linux-androideabi 

任何意見將是

非常感激。

回答

1

Here is a patch對於那個特殊的問題(用ICU 4.8做的,但應該給你的想法)。

另外,see the discussion here.

+0

感謝NuSkooler。該補丁有什麼作用? – tofutim 2012-03-20 23:01:33

+0

特定的補丁允許uprv_timezone()在Android/NDK上編譯/正常工作。其他討論中的其他補丁針對整個Android上的ICU。這些都是來自ICU的舊版本,但其中許多仍然適用於我想象的4.9。 – NuSkooler 2012-03-20 23:10:40

0

在CPPFLAGS中使用-DU_TIMEZONE = 0固定。但不清楚這是否是正確的方法。