(OK) 编译xerces-c-3.1.2(静态库)—CentOS 7— android-ndk

编译xerces-c (静态库)—CentOS 7— android-ndk

[root@localhost xerces-c-3.1.2]# pwd
/opt/cBPM-android/xerces-c-3.1.2
[root@localhost xerces-c-3.1.2]# make clean

export XERCES="/opt/cBPM-android/xerces-c-3.1.2/"
export NDK_ROOT="/opt/android-on-linux/android-ndk-r10d"
export TOOLCHAIN="NDKROOT/platforms/android21/archarm"exportARMVERSION=7exportSYSROOT="TOOLCHAIN"
export CFLAGS="--pipe --sysroot=SYSROOTINDK_ROOT/sources/cxx-stl/stlport/stlport -INDKROOT/platforms/android21/archarm/usr/includeINDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/include -INDKROOT/toolchains/armlinuxandroideabi4.9/prebuilt/linuxx8664/lib/gcc/armlinuxandroideabi/4.9/includefixedINDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/include -IXERCES/src/xercesc/xincludeIXERCES/tests/src/xinclude -IXERCES/tests/src/xinclude/tests/xinclude"exportCPPFLAGS="CFLAGS"
export CXXFLAGS="CFLAGS"exportLDFLAGS="LSYSROOT/usr/lib/ -LNDKROOT/sources/cxxstl/stlport/libs/armeabiv7aL/opt/cBPMandroid/criterialin/liblstlportstaticlgcclcliconv"exportCPATH="NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin"
export CPP="CPATH/armlinuxandroideabicpp"exportCXX="CPATH/arm-linux-androideabi-g++"
export CC="CPATH/armlinuxandroideabigcc"exportLD="CPATH/arm-linux-androideabi-ld"
export AR="CPATH/arm-linux-androideabi-ar"   [root@localhost xerces-c-3.1.2]# ac_cv_func_iconv_open=yes ac_cv_func_iconv_close=yes ac_cv_func_mblen=yes ac_cv_func_wcstombs=yes ac_cv_func_mbstowcs=yes ac_cv_func_iconv=yes ./configure --host="arm-linux-eabi" --enable-static --disable-shared --enable-transcoder-iconv  [root@localhost xerces-c-3.1.2]# make -j5 [root@localhost xerces-c-3.1.2]# cp ./src/.libs/libxerces-c.a /opt/cBPM-android/criteria-lin/lib   -----------------------  /opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/include /opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/stlport /opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/gabi++/include /opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.9/include  /opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib /opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/libs/armeabi-v7a /opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi  -----------------------  // -nostdlib -Xlinker -RSYSROOT/usr/lib SYSROOT/usr/lib/crtbeginstatic.oSYSROOT/usr/lib/crtend_android.o
// ls /opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/libs/armeabi-v7a
// libstlport_shared.so  libstlport.so  libstlport_static.a  thumb

[root@localhost xerces-c-3.1.2]# ./configure --host=arm-linux-androideabi --enable-static --disable-shared --enable-transcoder-iconv

错误:configure: error: Xerces cannot function without a transcoder

解决方法如下:
//编译静态库
[root@localhost xerces-c-3.1.2]# ac_cv_func_iconv_open=yes ac_cv_func_iconv_close=yes ac_cv_func_mblen=yes ac_cv_func_wcstombs=yes ac_cv_func_mbstowcs=yes ac_cv_func_iconv=yes ./configure --host=arm-linux-androideabi --enable-static --disable-shared --enable-transcoder-iconv
[root@localhost xerces-c-3.1.2]# make -j5


错误:
xercesc/util/PlatformUtils.cpp:713:4: error: #error No timing support is configured for this platform. You must configure it.
解决方法,在 config.h  加下面一行
#define HAVE_GETTIMEOFDAY 1
#define HAVE_STRCASECMP 1
#define HAVE_STRNCASECMP 1

//成功编译静态库
[root@localhost xerces-c-3.1.2]# find . -name libxerces-c.a
./src/.libs/libxerces-c.a

//复制库文件(arm)
[root@localhost xerces-c-3.1.2]# cp ./src/.libs/libxerces-c.a /opt/cBPM-android/criteria-lin/lib


+++++++++++++编译Criteria.Tools.Executor错误
xercesc/util/XMLAbstractDoubleFloat.cpp:430: error: undefined reference to 'localeconv'

解决方法:+++++++++++++ 在上面基础上,编译xerces-c (静态库)
[root@localhost xerces-c-3.1.2]# pwd
/opt/cBPM-android/xerces-c-3.1.2
[root@localhost xerces-c-3.1.2]# find . -name XMLAbstractDoubleFloat.cpp
./src/xercesc/util/XMLAbstractDoubleFloat.cpp
[root@localhost xerces-c-3.1.2]# gedit ./src/xercesc/util/XMLAbstractDoubleFloat.cpp

//    lconv* lc = localeconv();
//    char delimiter = *lc->decimal_point;

    char delimiter = '.';        //把localeconv()调用给绕过去了

保存,重新编译xerces-c (静态库)


posted @   张同光  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示