通过adb发送as key vall操作手机,怎么你退出底层驱动对应的key code

(OK) 编译cBPM-android—CentOS 7—NDK8—androideabi-4.7—API14—2版 - centos - ITkeyowrd
(OK) 编译cBPM-android—CentOS 7—NDK8—androideabi-4.7—API14—2版
推荐:宿主机: CentOS 7 + android-ndk-r8e-linux-x86_64.tar.bz2 + arm_linux-androideabi-4.7 + API-14 手机:MB526 + Android 4.4.4 + armv7 [root@localhost andr
宿主机:CentOS 7 + android-ndk-r8e-linux-x86_64.tar.bz2 + arm_linux-androideabi-4.7 + API-14手机:MB526 + Android 4.4.4 + armv7[root@localhost android-on-linux]# wget -c /android/ndk/android-ndk-r8e-linux-x86_64.tar.bz2-------------- Build: Debug Win32 in Criteria.Libraries.bOS (compiler: GNU ARM GCC Compiler For Android)---------------步骤(问题)1:/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory[root@localhost cBPM-android]# ls /usr/include/gnu/stubsstubs-64.hstubs.h[root@localhost cBPM-android]# 解决方法: yum install glibc-devel.i686步骤(问题)2:/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/stlport/limits.h:30:43: error: #include nested too deeply解决方法: stlport/stlport/limits.h:27: #if defined (_STLP_HAS_INCLUDE_NEXT)改为#if !defined (_STLP_HAS_INCLUDE_NEXT)步骤(问题)3:-fno-exceptions解决方法:-fexceptions开启异常,不用 Android自带的 libstlport.so,使用/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/libs/armeabi-v7a/libstlport_static.aLinker Settings:-Wl,-dn -lstlport_static -Wl,-dy步骤(问题)4:String/bOSStringUtils.cpp:17:21: error: 'toupper' was not declared in this scope解决方法: 在String/bOSStringUtils.cpp开头#include &ctype.h&步骤(问题)5:Idioma/ItemInterface.cpp:41:30: error: 'isdigit' was not declared in this scope解决方法: 在Idioma/ItemInterface.cpp开头#include &ctype.h&步骤(问题)6:/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.7/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lxerces-c-3.1解决方法:http://permalink.gmane.org/gmane.text.xml.xerces-c.user/3834步骤(问题)7:+++++++++++++编译libiconv-1.14 (静态库)[root@localhost libiconv-1.14]# pwd/opt/cBPM-android/libiconv-1.14[root@localhost libiconv-1.14]# make cleanexport NDK_ROOT=&/opt/android-on-linux/android-ndk-r8e&export SYSROOT=&$NDK_ROOT/platforms/android-14/arch-arm&export CFLAGS=&-g --pipe --sysroot=$SYSROOT -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -I$NDK_ROOT/platforms/android-14/arch-arm/usr/include&export CPPFLAGS=&$CFLAGS&export CXXFLAGS=&$CFLAGS&export LDFLAGS=&--sysroot=$SYSROOT -L$SYSROOT/usr/lib/ -L$NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -lstlport_static -lgcc -lc&export CPATH=&$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin&export CPP=&$CPATH/arm-linux-androideabi-cpp&export CXX=&$CPATH/arm-linux-androideabi-g++&export CC=&$CPATH/arm-linux-androideabi-gcc&export LD=&$CPATH/arm-linux-androideabi-ld&export AR=&$CPATH/arm-linux-androideabi-ar&[root@localhost libiconv-1.14]# gl_cv_header_working_stdint_h=yes ./configure --host=arm-linux-androideabi --enable-static --disable-shared[root@localhost libiconv-1.14]# make -j5[root@localhost libiconv-1.14]# find . -name libiconv.a[root@localhost libiconv-1.14]# cp ./lib/.libs/libiconv.a /opt/cBPM-android/criteria-lin/lib至此,成功编译 libiconv-1.14 静态库-----------------如果遇到错误,参考下面内容错误:configure: error: /bin/sh build-aux/config.sub arm-linux-androideabi failed//You might need a newer config.sub and config.guess,
or later.//You can obtain the newest version of config.guess and config.sub from the ‘config’ project at http://savannah.gnu.org/. The commands to fetch them are$ wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.a=blob_f=config.hb=HEAD'$ wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.a=blob_f=config.hb=HEAD'或者:[root@localhost libiconv-1.14]# locate config.guess/opt/gcc-4.9.0/config.guess[root@localhost libiconv-1.14]# cp /opt/gcc-4.9.0/config.guess /opt/gcc-4.9.0/config.sub build-aux/[root@localhost libiconv-1.14]# cp /opt/gcc-4.9.0/config.guess /opt/gcc-4.9.0/config.sub libcharset/build-aux///[root@localhost libiconv-1.14]# gl_cv_header_working_stdint_h=yes ./configure --host=arm-linux-androideabi[root@localhost libiconv-1.14]# gl_cv_header_working_stdint_h=yes ./configure --host=arm-linux-androideabi --enable-static --disable-shared[root@localhost libiconv-1.14]# make -j5[root@localhost libiconv-1.14]# find . -name libiconv.a./lib/.libs/libiconv.a//复制库文件(arm)[root@localhost libiconv-1.14]# cp ./lib/.libs/libiconv.a /opt/cBPM-android/criteria-lin/lib[root@localhost libiconv-1.14]# cp ./lib/.libs/libiconv.so* /opt/cBPM-android/criteria-lin/lib[root@localhost libiconv-1.14]# cp /usr/lib64/libWorkflowEngineD.so /opt/cBPM-android/criteria-lin/lib[root@localhost libiconv-1.14]# cp /usr/lib64/libLibraries.so /opt/cBPM-android/criteria-lin/lib+++++++++++++编译Criteria.Tools.Executor错误/opt/cBPM-android/criteria-lin/lib/libxerces-c.a(IconvTransService.o):IconvTransService.cpp:function xercesc_3_1::IconvLCPTranscoder::calcRequiredSize(char const*, xercesc_3_1::MemoryManager*): error: undefined reference to '__ctype_get_mb_cur_max'解决方法:+++++++++++++ 在上面基础上,编译libiconv (静态库)這似乎是NDK的BUG,在stdlib.h內有宣告出__ctype_get_mb_cur_max函數,但是卻沒有去實作它。如果出現這個問題,不建議直接修改NDK,要到libiconv目錄下,修改「libcharset/lib」目錄裡的「localcharset.c」檔案,在檔案最下面加上以下程式碼即可。[root@localhost libiconv-1.14]# gedit /opt/cBPM-android/libiconv-1.14/libcharset/lib/localcharset.csize_t __ctype_get_mb_cur_max(void){return 1;}保存,重新编译libiconv (静态库)[root@localhost libiconv-1.14]# nm ./lib/.libs/libiconv.a |grep ctype_get_mb_cur_maxU __ctype_get_mb_cur_max0000060c T __ctype_get_mb_cur_max//如果您指定了 -A 选项,则 nm 命令只报告与该文件有关的或者库或者对象名。[root@localhost libiconv-1.14]# nm -A ./lib/.libs/libiconv.a|grep ctype_get_mb_cur_max./lib/.libs/libiconv.a:iconv.o:U __ctype_get_mb_cur_max./lib/.libs/libiconv.a:localcharset.o:0000060c T __ctype_get_mb_cur_max[root@localhost libiconv-1.14]# [root@localhost criteria-lin]#nm -A lib/lib* |grep ctype_get_mb_cur_maxnm: lib/libc.so:无符号lib/libiconv.a:iconv.o:U __ctype_get_mb_cur_maxlib/libiconv.a:localcharset.o:0000060c T __ctype_get_mb_cur_maxlib/libiconv.so:U __ctype_get_mb_cur_maxlib/libiconv.so.2:U __ctype_get_mb_cur_maxlib/libiconv.so.2.5.1:U __ctype_get_mb_cur_maxnm: lib/libsqlite.so:无符号nm: lib/libstdc++.so:无符号lib/libxerces-c-3.1.so:U __ctype_get_mb_cur_maxlib/libxerces-c.a:IconvTransService.o:U __ctype_get_mb_cur_max所以,编译Criteria.Tools.Executor时,需要 静态链接 /opt/cBPM-android/criteria-lin/lib/libiconv.a++++++++++++++++++++++++++编译xerces-c-3.1.2(动态库)—CentOS 7— android-ndkexport XERCES=&/opt/cBPM-android/xerces-c-3.1.2/&export NDK=&/opt/android-on-linux/android-ndk-r8e/&export SYSROOT=&$NDK/platforms/android-14/arch-arm&export CC=&$NDK/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc&export CXX=&$NDK/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++&export CFLAGS=&--sysroot=$SYSROOT&export LDFLAGS=&--sysroot=$SYSROOT -nostdlib -L$NDK/sources/cxx-stl/stlport/libs/armeabi-v7a -L$SYSROOT/usr/lib -L/opt/cBPM-android/criteria-lin/lib -liconv -lstdc++ -lstlport -lc&export CPPFLAGS=&-fPIC -I$NDK/sources/cxx-stl/stlport/stlport -I$NDK/platforms/android-14/arch-arm/usr/include -I$NDK/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/include -I$NDK/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -I$NDK/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include -I$XERCES/src/xercesc/xinclude -I$XERCES/tests/src/xinclude -I$XERCES/tests/src/xinclude/tests/xinclude&// -nostdlib -Xlinker -R$SYSROOT/usr/lib $SYSROOT/usr/lib/crtbegin_static.o $SYSROOT/usr/lib/crtend_android.o// ls /opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/libs/armeabi-v7a// libstlport_shared.solibstlport.solibstlport_static.athumb[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//编译动态库[root@localhost xerces-c-3.1.2]# gl_cv_header_working_stdint_h=yes 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-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.stricmp.c:37:3: error: #error Need implementation of stricmp compatibility functionstrnicmp.c:37:3: error: #error Need implementation of strnicmp compatibility function解决方法,在 config.h加下面一行#define HAVE_GETTIMEOFDAY 1#define HAVE_STRCASECMP 1#define HAVE_STRNCASECMP 1错误:towupper.hconflicting declaration of C function 'int towupper(int)'解决方法towlower.h、towupper.h注释如下://extern int towlower(int wc);//extern int towupper(int wc);错误:arm-linux-androideabi-g++: error: crtbegin_so.o: No such file or directoryarm-linux-androideabi-g++: error: crtend_so.o: No such file or directory原因是ld找不到crtbegin_so.o 和 crteng_so.o,解决方法,在项目源码下面建立软连接ln -s /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtbegin_so.o srcln -s /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtend_so.o src//成功编译动态库[root@localhost xerces-c-3.1.2]# find . -name libxerces-c-3.1.so./src/.libs/libxerces-c-3.1.so//复制库文件(arm)[root@localhost xerces-c-3.1.2]# cp ./src/.libs/libxerces-c-3.1.so /opt/cBPM-android/criteria-lin/lib步骤(问题)8:+++++++++++++ 在上面基础上,编译xerces-c (静态库)编译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 cleanexport XERCES=&/opt/cBPM-android/xerces-c-3.1.2/&export NDK_ROOT=&/opt/android-on-linux/android-ndk-r8e&export SYSROOT=&$NDK_ROOT/platforms/android-14/arch-arm&export CFLAGS=&-g --sysroot=$SYSROOT --pipe -I$NDK_ROOT/sources/cxx-stl/stlport/stlport -I$NDK_ROOT/platforms/android-14/arch-arm/usr/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include -I/opt/cBPM-android/libiconv-1.14/include&export CPPFLAGS=&$CFLAGS&export CXXFLAGS=&$CFLAGS&export LDFLAGS=&-L$NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -static -lstlport_static -liconv -lgcc -lc&export CPATH=&$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin&export CPP=&$CPATH/arm-linux-androideabi-cpp&export CXX=&$CPATH/arm-linux-androideabi-g++&export CC=&$CPATH/arm-linux-androideabi-gcc&export LD=&$CPATH/arm-linux-androideabi-ld&export AR=&$CPATH/arm-linux-androideabi-ar& -liconv --sysroot=$SYSROOT------------------使用这条命令[root@localhost xerces-c-3.1.2]# ./configure --host=&arm-linux-eabi& --enable-static --disable-shared --enable-transcoder-iconv出现错误configure: error: Xerces cannot function without a transcoder解决方法[root@localhost xerces-c-3.1.2]# grep HAVE_ICONV_CLOSE -R ../config.h.in:#undef HAVE_ICONV_CLOSE[root@localhost libiconv-1.14]# pwd/opt/cBPM-android/libiconv-1.14[root@localhost libiconv-1.14]# cp include/iconv.h ../xerces-c-3.1.2/src/------------------然后,使用这条命令[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 --with-iconv=/opt/cBPM-android/libiconv-1.14------------------[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至此,成功编译 xerces-c-3.1.2 静态库-----------------如果遇到错误,参考下面内容/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/include/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/stlport/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/gabi++/include/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/include/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/libs/armeabi-v7a/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-----------------------[root@localhost lib]# cd /opt/android-on-linux/android-ndk-r10d/[root@localhost android-ndk-r10d]# ls ndk-buildndk-build[root@localhost android-ndk-r10d]# export PATH=$PATH:/opt/android-on-linux/android-ndk-r10d/[root@localhost android-ndk-r10d]# cd /opt/cBPM-android/commandergenius-sdl_android/project/jni/xerces[root@localhost xerces]# pwd/opt/cBPM-android/commandergenius-sdl_android/project/jni/xerces[root@localhost xerces]# ndk-build find: ‘/opt/cBPM-android/commandergenius-sdl_android/project/jni/../jni/application//src’: 没有那个文件或目录Android NDK: WARNING:/opt/cBPM-android/commandergenius-sdl_android/project/jni/../jni/application/Android.mk:application: non-system libraries in linker flags: -ltremorAndroid NDK:This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIESAndroid NDK:or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of theAndroid NDK:current module[armeabi] SharedLibrary: libapplication.so/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ltremorcollect2: error: ld returned 1 exit statusmake: *** [/opt/cBPM-android/commandergenius-sdl_android/project/obj/local/armeabi/libapplication.so] Error 1[root@localhost xerces]# ls /opt/cBPM-android/commandergenius-sdl_android/project/obj/local/armeabi/libogg.alibsdl-1.2.solibsdl_native_helpers.solibtremor.aobjs[root@localhost xerces]# cp /opt/cBPM-android/commandergenius-sdl_android/project/obj/local/armeabi/libtremor.a /opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib/-----------------------// -nostdlib -Xlinker -R$SYSROOT/usr/lib $SYSROOT/usr/lib/crtbegin_static.o $SYSROOT/usr/lib/crtend_android.o// ls /opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/libs/armeabi-v7a// libstlport_shared.solibstlport.solibstlport_static.athumb[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_char delimiter = '.';//把localeconv()调用给绕过去了保存,重新编译xerces-c (静态库)+++++++++++++步骤(问题)9:+++++++++++++编译Criteria.Tools.Executor错误/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.7/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lmysqlclient解决方法: 使用 SQLite 替换 MySQL, CodeBlocks中,Linker Settings:mysqlclient 替换为 sqlite********---------------------------********[root@localhost criteria-lin]# gedit ./src/Criteria/Criteria.Libraries.bOS/SQL/bOSSQLConnectionManager.cpp将#include &bOSmySQLConnection.h&#include &bOSmySQLConnectionData.h&using namespace bOS::SQL::mySQL;#ifdef _USE_SQLITE3_#include &bOSSQLiteConnection.h&#include &bOSSQLiteConnectionData.h&using namespace bOS::SQL::SQLite3;#endif修改为#ifdef _USE_MYSQL_#include &bOSmySQLConnection.h&#include &bOSmySQLConnectionData.h&using namespace bOS::SQL::mySQL;#endif#ifdef _USE_SQLITE3_#include &bOSSQLiteConnection.h&#include &bOSSQLiteConnectionData.h&using namespace bOS::SQL::SQLite3;#endif********---------------------------********[root@localhost criteria-lin]# gedit ./include/bOS/bOSSQLConnectionManager.h将enum DataBaseType{ODBC_INTERFACE,SQLITE3,MYSQL};修改为enum DataBaseType{CONN,MYSQL,ODBC_INTERFACE,SQLITE3,FILESYSTEM};********---------------------------********所有 和 MYSQL 相关 代码,使用如下:#ifdef _MYSQL_...#endif实际只涉及一个文件:./src/Criteria/Criteria.Libraries.bOS/SQL/bOSSQLConnectionManager.cpp比较彻底的方法:[root@localhost criteria-lin]# mv ./include/bOS/mySQL ./include/bOS/mySQL-not-use[root@localhost criteria-lin]# mv ./src/Criteria/Criteria.Libraries.bOS/SQL/mySQL/ ./src/Criteria/Criteria.Libraries.bOS/SQL/mySQL-not-use另外,src/Criteria/Criteria.Libraries.bOS/Libraries.bOS.cbp,中删除如下内容:&Unit filename=&SQL/mySQL/bOSmySQLConnection.cpp& /&&Unit filename=&SQL/mySQL/bOSmySQLConnection.h& /&&Unit filename=&SQL/mySQL/bOSmySQLConnectionData.cpp& /&&Unit filename=&SQL/mySQL/bOSmySQLConnectionData.h& /&&Unit filename=&SQL/mySQL/bOSmySQLResultSet.cpp& /&&Unit filename=&SQL/mySQL/bOSmySQLResultSet.h& /&&Unit filename=&SQL/mySQL/bOSmySQLResultSetField.cpp& /&&Unit filename=&SQL/mySQL/bOSmySQLResultSetField.h& /&&Unit filename=&SQL/mySQL/bOSmySQLResultSetMetaData.cpp& /&&Unit filename=&SQL/mySQL/bOSmySQLResultSetMetaData.h& /&步骤(问题)10:********---------------------------编译参数 设置********codeblocks 全局参数 设置:【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Compiler Settings】-&【Other options】空【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Compiler Settings】-&【#defines】空【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Linker Settings】-&【Link libraries】空【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Search directories】-&【Compiler】空【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Search directories】-&【Linker】空【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Toolchain executable】-&【compiler Installation directory】/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/arm-linux-androideabi-gccarm-linux-androideabi-g++arm-linux-androideabi-g++arm-linux-androideabi-ar【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Build options】-&【处理器数】4********---------------------------******** 全局参数 设置:权宜之计,实现 静态库的编译:【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Other Settings】-&【Advanced options】-&【Commands】-&【Link object files to dynamic library】将$linker -shared $libdirs $link_objects $link_resobjects -o $exe_output $link_options $libs修改为$lib_linker -r -s $static_output $link_objects ********---------------------------******** 全局参数 设置:权宜之计,实现 链接对象顺序的正确,否则,编译Criteria.Tools.Executor出错【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Other Settings】-&【Advanced options】-&【Commands】-&【Link object files to console executable】将$linker $libdirs -o $exe_output $link_objects $link_resobjects $link_options $libs修改为$linker $libdirs -o $exe_output /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtbegin_static.o $link_objects $link_resobjects $link_options $libs /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtend_android.o主要是下面两个文件的位置:/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtbegin_static.o/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtend_android.o********---------------------------********codeblocks 局部参数 设置: Criteria.Libraries.bOS【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Compiler Settings】-&【Other options】-W-O0-g3-c-fmessage-length=0-fexceptions默认情况下,GNU工具链编译过程中,控制台输出的一行信息是不换行的,这样,当输出信息过长时(如编译错误时的信息),会导致你无法看到完整的输出信息,加入-fmessage-length=0后,输出信息会根据控制台的宽度自动换行,这样就能看全输出信息了。【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Compiler Settings】-&【#defines】_USE_SQLITE3_SQLITE_OS_UNIXWIN32_DEBUG_WINDOWS_USRDLL_CODEMANAGER_TRACE_ON_BOS_EXPORTSCODEMANAGER_EXPORTSANDROID【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Search directories】-&【Compiler】/opt/cBPM-android/criteria-lin/include/bOS//opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/stlport/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/include【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Pre/post build steps】-&【Post-build steps】cp /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/bOS/libLibraries.a /opt/cBPM-android/criteria-lin/lib/右健单击【Criteria.Libraries.bOS】,选择【Properties】,设置见图。********---------------------------********codeblocks 局部参数 设置: Criteria.WorkflowEngine【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Compiler Settings】-&【Other options】-W-O0-g3-c-fmessage-length=0-fexceptions【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Compiler Settings】-&【#defines】WIN32_DEBUG_WINDOWS_USRDLLENGINE_EXPORTSWAPI_EXPORTS_CODEMANAGER_TRACE_ON__USE_SQLITE3_BOS_EXPORTS【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Search directories】-&【Compiler】/opt/cBPM-android/criteria-lin/include/WorkflowEngine/opt/cBPM-android/criteria-lin/include/bOS//opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/stlport/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/include【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Pre/post build steps】-&【Post-build steps】cp /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/WorkflowEngine/libWorkflowEngineD.a /opt/cBPM-android/criteria-lin/lib/右健单击【Criteria.WorkflowEngine】,选择【Properties】,设置见图。********---------------------------********codeblocks 局部参数 设置: Criteria.Tools.Executor【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Compiler Settings】-&【Other options】-W-O0-g3-c-fmessage-length=0-fexceptions【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Compiler Settings】-&【#defines】WIN32_DEBUG_CONSOLE_CODEMANAGER_TRACE_ON_BOS_EXPORTSENGINE_EXPORTS顺序超级重要)》》》》》》》》》》(顺序超级重要)《《《《《《《《《《《《《codeblocks 局部参数 设置: Criteria.Tools.Executor【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Linker Settings】-&【Link libraries】WorkflowEngineDLibrariessqlitexerces-ciconvstlport_staticmgcc【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Linker Settings】-&【Other linker options】-static-nostdlib-Wl,-dy /opt/cBPM-android/criteria-lin/lib/libdl.so /opt/cBPM-android/criteria-lin/lib/libc.so -Wl,-dn-Wl,-dy /opt/cBPM-android/criteria-lin/lib/libdl.so -Wl,-dn【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Search directories】-&【Compiler】/opt/cBPM-android/criteria-lin/include/bOS//opt/cBPM-android/criteria-lin/include/WorkflowEngine/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/include/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/stlport【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Search directories】-&【Linker】/opt/cBPM-android/criteria-lin/lib/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/libs/armeabi-v7a/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib//opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/armv7-a///libgcc.a【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Pre/post build steps】-&【Post-build steps】cp /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/executer /opt/cBPM-android/criteria-lin/lib/右健单击【Criteria.WorkflowEngine】,选择【Properties】,设置见图。至此,编译Criteria.Tools.Executor成功,具体见步骤(问题)11:+++++++++++++编译Criteria.Tools.Executor出错,参考下面内容error: undefined reference to 'dlopen'添加链接选项:-Wl,-dy -ldl -Wl,-dn-Wl,-dy -lgcc -lc -lstlport_static -lstdc++ -ldl -Wl,-dn+++++++++++++编译Criteria.Tools.Executor错误:src/main.cpp:155: error: undefined reference to '__cxa_end_cleanup'最后一行:return 0;修改为:exit(0);----------------------------arm-linux-androideabi-g++ -L/opt/cBPM-android/criteria-lin/lib -L/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/ -L/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/armv7-a/-o /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/executer /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/src/main.o-static -nostdlib -Wl,-v -Wl,-dy -lc -ldl -lstlport -lstdc++ -Wl,-dn-lgcc -lsqlite -lxerces-c -lLibraries -lWorkflowEngineD$linker $libdirs -o $exe_output $link_objects $link_resobjects $link_options $libs$linker $libdirs -o $exe_output $link_objects $link_resobjects crtbegin_static.o $link_options $libs crtend_android.oarm-eabi-ld $(LDFLAGS)crtbegin_static.o$(OBJECTS) $(LIBS) crtend_android.o -Wl,-v -Wl,-dy -lc -ldl -lstlport -lstdc++ -Wl,-dn+++++++++++++编译Criteria.Tools.Executor错误CodeManager/CodeItem.cpp:96: error: undefined reference to 'std::ostrstream::str()'正因为 ostrstream 调用str()后需要自己清除存储空间的不便,才有了后来的ostringstream,对这个问题的改进,我们不必须再负责清除存储空间啦.+++++++++++++编译Criteria.Tools.Executor错误bionic/libc/bionic/libc_logging.cpp:165: error: undefined reference to '__aeabi_uldivmod'使用手机上的libc.so,不使用静态库[root@localhost mb526-all-lib]# cp /opt/cBPM-android/mb526-all-lib/libc.so /opt/cBPM-android/criteria-lin/lib/+++++++++++++编译Criteria.Tools.Executor错误困扰2天的错误WAPI/WAPI.cpp:72: error: undefined reference to 'bOS::XML::XMLHelper::initialize()'WAPI/WAPI.cpp:137: error: undefined reference to 'bOS::XML::XMLHelper::terminate()'WAPI/WAPIProcess.cpp:37: error: undefined reference to 'bOS::XML::Data::XMLObject::getXMLString(unsigned int)'WAPI/WAPIProcess.cpp:64: error: undefined reference to 'bOS::XML::Data::XMLObject::getXMLString(unsigned int)'WAPI/WAPIProcess.cpp:92: error: undefined reference to 'bOS::XML::Data::XMLObject::getXMLString(unsigned int)'...engine/Workflow.cpp:175: error: undefined reference to 'bOS::Collections::Collection::clear()'engine/Workflow.cpp:488: error: undefined reference to 'bOS::Collections::Collection::clear()'engine/Workflow.cpp:672: error: undefined reference to 'bOS::Collections::Collection::clear()'ExternalEvent/ManagedEventElement.cpp:73: error: undefined reference to 'bOS::XML::XMLAttribute::XMLAttribute()'ExternalEvent/ManagedEventElement.cpp:74: error: undefined reference to 'bOS::XML::XMLAttribute::setName(char const*)'ExternalEvent/ManagedEventElement.cpp:79: error: undefined reference to 'bOS::XML::XMLAttribute::setValue(char const*)'ExternalEvent/ManagedEventElement.cpp:82: error: undefined reference to 'bOS::XML::XMLAttribute::setValue(char const*)'ExternalEvent/ManagedEventElement.cpp:85: error: undefined reference to 'bOS::XML::XMLAttribute::setValue(char const*)'collect2: error: ld returned 1 exit statusProcess terminated with status 1 (0 minute(s), 1 second(s))313 error(s), 0 warning(s) (0 minute(s), 1 second(s))-----------------------------------解决方法:(顺序超级重要)(之前順序:Libraries、WorkflowEngineD)》》》》》(顺序超级重要)《《《《《codeblocks 局部参数 设置: Criteria.Tools.Executor【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Linker Settings】-&【Link libraries】WorkflowEngineDLibrariessqlitexerces-ciconvstlport_staticmgcc【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Linker Settings】-&【Other linker options】-static-nostdlib-Wl,-dy -ldl -lc -Wl,-dn+++++++++++++编译Criteria.Tools.Executor错误(不用看)Utils/bOSUniqueID.cpp:22: error: undefined reference to 'srand'Utils/bOSUniqueID.cpp:38: error: undefined reference to 'rand'解决方法:[root@localhost android-ndk-r10d]# gedit platforms/android-21/arch-arm/usr/include/stdlib.h[root@localhost android-ndk-r10d]# gedit platforms/android-14/arch-arm/usr/include/stdlib.hsrand is defined as inline in: android-19/arch-arm/usr/include/stdlib.h將定义 放到 android-21/arch-arm/usr/include/stdlib.h+++++++++++++编译Criteria.Tools.Executor错误xercesc/util/XMLAbstractDoubleFloat.cpp:430: error: undefined reference to 'localeconv'參考&&编译xerces-c (静态库)&&+++++++++++++编译Criteria.Tools.Executor错误xercesc/util/Transcoders/Iconv/IconvTransService.cpp:238: error: undefined reference to '__ctype_get_mb_cur_max'需要 静态链接 /opt/cBPM-android/criteria-lin/lib/libiconv.a步骤(问题)11:+++++++++++++编译Criteria.Tools.Executor————成功arm-linux-androideabi-g++ -W -O0 -g3 -c -fmessage-length=0 -fexceptions -DWIN32 -D_DEBUG -D_CONSOLE -D_CODEMANAGER_TRACE_ON_ -DBOS_EXPORTS -DENGINE_EXPORTS -I/opt/cBPM-android/criteria-lin/include/bOS -I/opt/cBPM-android/criteria-lin/include/WorkflowEngine -I/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/include -I/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/stlport -c src/main.cpp -o /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/src/main.oarm-linux-androideabi-g++ -L/opt/cBPM-android/criteria-lin/lib -L/opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/android-on-linux/android-ndk-r10d/platforms/android-16/arch-arm/usr/lib/ -L/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.6/armv7-a/ -o /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/executer /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtbegin_static.o /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/src/main.o-static -nostdlib -Wl,-dy /opt/cBPM-android/criteria-lin/lib/libdl.so /opt/cBPM-android/criteria-lin/lib/libc.so -Wl,-dn-lWorkflowEngineD -lLibraries -lsqlite -lxerces-c -liconv -lstlport_static -lm -lgcc /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtend_android.oOutput file is /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/executer with size 21.75 MBRunning target post-build stepscp /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/executer /opt/cBPM-android/criteria-lin/lib/Process terminated with status 0 (0 minute(s), 46 second(s))0 error(s), 305 warning(s) (0 minute(s), 46 second(s)) 步骤(问题)12:+++++++++++++编译Criteria.Tools.Executor————成功———测试[root@localhost lib]# pwd/opt/cBPM-android/criteria-lin/lib[root@localhost lib]# ll executer -rwxr-xr-x. 1 root root 月25 07:49 executer[root@localhost lib]# adb rootbash: adb: 未找到命令...相似命令是: 'gdb'--------------------------------[root@localhost platform-tools]# pwd/opt/android-on-linux/android-sdk-linux/platform-tools[root@localhost platform-tools]# ls adbadb[root@localhost platform-tools]# 将 PATH=$PATH:/opt/android-on-linux/android-sdk-linux/platform-tools 添加到/root/.bashrc 最后。[root@localhost lib]# adb rootbash: /opt/android-on-linux/android-sdk-linux/platform-tools/adb: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录[root@localhost lib]# yum install glibc.i686[root@localhost lib]# adb rootadb: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory[root@localhost lib]# yum install libstdc++.so.6--------------------------------[root@localhost lib]# adb root[root@localhost lib]# adb push executer /data/data/criteria3352 KB/s ( bytes in 6.469s)[root@localhost lib]# adb root[root@localhost lib]# adb shellroot@mb526:/ # export WF_HOME=/data/data/ export CRITERIA_HOME=/data/data/criteriaroot@mb526:/ # cd data/data/criteria/root@mb526:/data/data/criteria # ./executer TestNotePad/system/bin/sh: ./executer: No such file or directory这是因为系统的动态链接器与executer程序中动态链接器的名字或路径不对,执行如下命令:[root@localhost lib]# pwd/opt/cBPM-android/criteria-lin/lib[root@localhost lib]# readelf -l executer Elf 文件类型为 EXEC (可执行文件)入口点 0xb138共有 8 个程序头,开始于偏移量52程序头:TypeOffsetVirtAddrPhysAddrFileSiz MemSizFlg AlignPHDR0xxxx00 R0x4INTERP0xxxx13 R0x1[正在请求程序解释器:/usr/lib/libc.so.1]LOAD0xxxxx526848 R E 0x1000LOAD0x526ec8 0x0052fec8 0x0052fec8 0xb0 RW0x1000DYNAMIC0x535cd8 0x0053ecd8 0x0053ecd8 0x000e8 0x000e8 RW0x4GNU_STACK0xxxx00 RW0EXIDX0xxxx00 R0x4GNU_RELRO0x526ec8 0x0052fec8 0x0052fec8 0x38 RW0x8 Section to Segment mapping:段节...0001 .interp02 .interp .dynsym .dynstr .hash .rel.dyn .rel.plt .plt .text .note.android.ident .ARM.extab .ARM.exidx .rodata03 .data.rel.ro.local .fini_array .init_array .preinit_array .data.rel.ro .dynamic .got .data .bss04 .dynamic0506 .ARM.exidx07 .data.rel.ro.local .fini_array .init_array .preinit_array .data.rel.ro .dynamic .got[root@localhost lib]# objdump -x executer|grep NEEDEDNEEDEDlibdl.soNEEDEDlibc.so[root@localhost lib]# [root@localhost lib]# pwd/opt/cBPM-android/criteria-lin/lib[root@localhost lib]# adb push executer /data/data/criteria3352 KB/s ( bytes in 6.469s)[root@localhost lib]# adb root[root@localhost lib]# adb shellroot@mb526:/ # cd data/data/criteria/root@mb526:/data/data/criteria # ./executer TestNotePad/system/bin/sh: ./executer: No such file or directoryroot@mb526:/data/data/criteria # mount -o remount,rw /root@mb526:/data/data/criteria # mkdir -p /usr/libroot@mb526:/data/data/criteria # cp /system/lib/libc.so /system/lib/libdl.so /usr/lib/root@mb526:/data/data/criteria # ./executer/system/bin/sh: ./executer: No such file or directory1|root@mb526:/data/data/criteria # ln -s /usr/lib/libc.so /usr/lib/libc.so.11|root@mb526:/data/data/criteria # ln -s /usr/lib/libdl.so /usr/lib/libdl.so.1root@mb526:/data/data/criteria # ./executer/system/bin/sh: ./executer: Permission deniedroot@mb526:/data/data/criteria # ll /usr/lib/lib*-rw-r--r-- rootroot5-09-22 08:16 libc.solrwxrwxrwx rootroot 08:17 libc.so.1 -& /usr/lib/libc.so-rw-r--r-- rootroot-22 08:16 libdl.solrwxrwxrwx rootroot 08:17 libdl.so.1 -& /usr/lib/libdl.soroot@mb526:/data/data/criteria # chmod 777 /usr/lib/lib*so root@mb526:/data/data/criteria # ./executer TestNotePadIllegal instruction//这个错误表明我们的程序执行了不正确的指令。一般这种情况是因为我们编译起编译出了较高版本的ARM指令造成的。//API level 21,NDK 10,arm_linux-androideabi-4.9//我的手机,Android 4.4.4,ARMv7,---&API level 19,NDK 9,arm_linux-androideabi-4.6//所以库文件路径:/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/include/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/// 上面过程 重新 做一遍//API level 19,NDK 9,arm_linux-androideabi-4.6,链接失败//API level 15,NDK 9,arm_linux-androideabi-4.8,Illegal instruction//API level 19,NDK 10,arm_linux-androideabi-4.6,链接失败//API level 19,NDK 10,arm_linux-androideabi-4.8,Illegal instruction//API level 16,NDK 10,arm_linux-androideabi-4.8,Illegal instruction//API level 16,NDK 10,arm_linux-androideabi-4.6,error: cannot mix -static with dynamic object//API level 14,NDK 8,arm_linux-androideabi-4.7,成功------------------------------------------------------------------------------------------下面是在手机上运行移植成功的cBPM-android------------------------------------------------------------------------------------------[root@localhost lib]# pwd/opt/cBPM-android/criteria-lin/lib[root@localhost lib]# adb push executer /data/data/criteria3352 KB/s ( bytes in 6.469s)[root@localhost lib]# adb root[root@localhost lib]# adb shellroot@mb526:/ # cd data/data/criteria/root@mb526:/data/data/criteria #export WF_HOME=/data/data/ export CRITERIA_HOME=/data/data/criteriaroot@mb526:/data/data/criteria # ./executer TestNotePadThe program will perform the following steps:1: Criteria session initialization (only one time)----- for each process (begin) -----2: Create process instance from template3: Execute process instance just created----- for each process (end) -----4: Querying for activity pending5: close criteria sessionPress a Key for beginning................................................2Criteria session Initialization.....(look at Executor trace file)Criteria session Initialization [KO].Error[Impossible to retrieve ${CRITERIA_HOME}]. Exit.2|root@mb526:/data/data/criteria # ------------------------------------------------------------------------------------------步骤(问题)13:+++++++++++++编译Criteria.Tools.Executor————成功———调试宿主机:codeblocks 全局参数 设置:【Settings】-&【debugger】-&【create config】-&【arm-gdb】-&【executable path】/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gdb【Settings】-&【Compiler】-&【GNU ARM GCC Compiler For Android】-&【Toolchain executable】-&【debugger】arm-gdbcodeblocks 局部参数 设置:右健单击【Criteria.WorkflowEngine】,选择【Properties】-&【debugger】-&【debug win32】192.168.0.101:1111[root@localhost gdbserver]# pwd/opt/android-on-linux/android-ndk-r8e/prebuilt/android-arm/gdbserver[root@localhost gdbserver]# lsgdbserver[root@localhost gdbserver]# adb push gdbserver /data/data/criteria[root@localhost lib]# pwd/opt/cBPM-android/criteria-lin/lib[root@localhost lib]# adb push executer /data/data/criteria----------------------OK---------------------手机:shell@mb526:/ $getprop |grep ip[dhcp.wlan0.ipaddress]: [192.168.0.101]export WF_HOME=/data/data/ export CRITERIA_HOME=/data/data/criteriacd /data/data/criteria./gdbserver 192.168.0.100:1234 ./executer(192.168.0.100是宿主机IP)----------------------OK---------------------宿主机(命令行):[root@localhost Tools.Executor]# pwd/opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor[root@localhost Tools.Executor]# ls database notepad.txttempTestNotePad.xml executerExecutor-7-100423.trace src temp.c------------------------------------------------------------------------这段不用[root@localhost Tools.Executor]# export PATH=$PATH:/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/使用上面有问题:readchar: Got EOF Remote side has terminated connection. GDBserver will reopen the connection.------------------------------------------------------------------------将配置文件复制到 手机[root@localhost lib]# pwd/opt/cBPM-android/criteria-lin/lib[root@localhost lib]# lsexecuter[root@localhost lib]# adb push executer /data/data/criteria/[root@localhost Tools.Executor]# lsdatabaseexecuternotepad.txtsrctemptemp.cTestNotePad.xml[root@localhost Tools.Executor]# pwd/opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor[root@localhost Tools.Executor]# adb push database/ /data/data/criteria/database------------------------------------------------------------------------------------------------------------------------------------------------使用这段使用下面可以:[root@localhost Tools.Executor]# export PATH=$PATH:/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/------------------------------------------------------------------------gdb调试的时候如何带参数1,gdb --args ./A V1 V2 V32,gdb ./A,进入gdb后r V1 V2 V33,gdb ./A,进入gdb后设置参数set args V1 V2 V3 再直接 r------------------------------------------------------------------------------------------------------------------------------------------------宿主机(命令行):[root@localhost Tools.Executor]# arm-linux-androideabi-gdb executer(gdb)target extended-remote 192.168.0.104:8.0.101是手机IP//target remote 192.168.0.101:1234//break main.cpp:63//break main.cpp:155//break WAPI.cpp:72//break bOSXMLHelper.cpp:40//break PlatformUtils.hpp:813//break MemoryManagerImpl.cpp:37//break WorkflowListener.cpp:67//break XMLString.hpp:1451//break Hashers.hpp:47//break RangeToken.cpp:335//break XMLRangeFactory.cpp:113//break XMLInitializer.cpp:51//break XMLInitializer.cpp:62// 调试到此处,停止//break XMLInitializer.cpp:61// 所以,进入到initializeDatatypeValidatorFactory()单步跟踪,使用s,不要用nbreak IconvTransService.cpp:432//找到了故障点(在这一行的)。break IconvTransService.cpp:460//估计是内存分配问题,比如 溢出set debug remote 1set args TestNotePadrcsninfo breakdeletebreakpoint-numberbacktrace monitor exit//terminate gdbserver------------------------------------------------------------------------调试到此处,停止,并且 手机重启(gdb) bt#0xercesc_3_1::RangeToken::doCreateMap (this=0x5bece8) at xercesc/util/regx/RangeToken.cpp:852#10x00327af4 in xercesc_3_1::RangeToken::createMap (this=0x5bece8) at ./xercesc/util/regx/RangeToken.hpp:130#20x00331f84 in xercesc_3_1::XMLRangeFactory::buildRanges (this=0x5bd338, rangeTokMap=0x5ba2c8) at xercesc/util/regx/XMLRangeFactory.cpp:113#30x in xercesc_3_1::RangeTokenMap::buildTokenRanges (this=0x5ba2c8) at xercesc/util/regx/RangeTokenMap.cpp:247#40x in xercesc_3_1::XMLInitializer::initializeRangeTokenMap () at xercesc/util/regx/RangeTokenMap.cpp:49#50x00219aac in xercesc_3_1::XMLInitializer::initializeStaticData () at xercesc/util/XMLInitializer.cpp:51#60x0020ddac in xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 &xercesc_3_1::XMLUni::fgXercescDefaultLocale& &en_US&, nlsHome=0x0,panicHandler=0x0, memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:307#70x001534ac in bOS::XML::XMLHelper::initialize () at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp:40#80x0000ec88 in InitSessionWithParams (acConfigFile=0x5b64b8 &/data/data/criteria/database/Criteria.xml&, response=0x5b3b20)at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPI.cpp:72#90x in InitSession (response=0x5b3b20) at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/WAPI/WAPI.cpp:63#10 0x0000b34c in main (argc=2, argv=0xbeb2fa34)at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Tools/Criteria.Tools.Executor/src/main.cpp:63break XMLInitializer.cpp:61// 所以,进入到initializeDatatypeValidatorFactory()单步跟踪,使用s,不要用n#20x002aaf1c in xercesc_3_1::DatatypeValidatorFactory::expandRegistryToFullSchemaSet (this=0x5e3870)at xercesc/validators/datatype/DatatypeValidatorFactory.cpp:180#30x002aaca8 in xercesc_3_1::XMLInitializer::initializeDatatypeValidatorFactory () at xercesc/validators/datatype/DatatypeValidatorFactory.cpp:135break DatatypeValidatorFactory.cpp:180break DatatypeValidatorFactory.cpp:281break DatatypeValidatorFactory.cpp:315// 到此处,手机死机break DatatypeValidatorFactory.cpp:311// 所以,单步跟踪break DatatypeValidatorFactory.hpp:250// 到此处,手机死机break DatatypeValidatorFactory.hpp:246// 所以,单步跟踪#0xercesc_3_1::RefHashTableOfEnumerator&xercesc_3_1::KVStringPair, xercesc_3_1::StringHasher&::~RefHashTableOfEnumerator (this=0xbed963e4,__in_chrg=&optimized out&) at ./xercesc/util/RefHashTableOf.c:554#10x in xercesc_3_1::AbstractStringValidator::assignFacet (this=0x5e4a30, manager=0x5b6c98)at xercesc/validators/datatype/AbstractStringValidator.cpp:221#30x002bcaa0 in xercesc_3_1::StringDatatypeValidator::StringDatatypeValidator (this=0x5e4a30, baseValidator=0x5e3928, facets=0x5e4988, enums=0x0,finalSet=0, manager=0x5b6c98) at xercesc/validators/datatype/StringDatatypeValidator.cpp:50break AbstractStringValidator.cpp:221// 所以,单步跟踪break StringDatatypeValidator.cpp:50#0xercesc_3_1::StringDatatypeValidator::StringDatatypeValidator (this=0x5e4a30, baseValidator=0x5e3928, facets=0x5e4988, enums=0x0, finalSet=0,manager=0x5b6c98) at xercesc/validators/datatype/StringDatatypeValidator.cpp:51#10x002bcbbc in xercesc_3_1::StringDatatypeValidator::newInstance (this=0x5e3928, facets=0x5e4988, enums=0x0, finalSet=0, manager=0x5b6c98)at xercesc/validators/datatype/StringDatatypeValidator.cpp:64#20x002add30 in xercesc_3_1::DatatypeValidatorFactory::createDatatypeValidator (this=0x5e3870,typeName=0x4da7b4 &xercesc_3_1::SchemaSymbols::fgDT_NORMALIZEDSTRING&, baseValidator=0x5e3928, facets=0x5e4988, enums=0x0,isDerivedByList=false, finalSet=0, isUserDefined=false, userManager=0x5b6c98) at xercesc/validators/datatype/DatatypeValidatorFactory.cpp:678break DatatypeValidatorFactory.cpp:678Breakpoint 2, xercesc_3_1::DatatypeValidatorFactory::expandRegistryToFullSchemaSet (this=0x5e3870)at xercesc/validators/datatype/DatatypeValidatorFactory.cpp:312312getDatatypeValidator(XMLUni::fgNmTokenString), facets, 0, true, 0, false);(gdb) break DatatypeValidatorFactory.cpp:312(gdb) s(gdb) n(gdb)manager=0x5b6c98) at xercesc/validators/datatype/ListDatatypeValidator.cpp:5858if (!baseValidator)(gdb) break ListDatatypeValidator.cpp:58(gdb) break ListDatatypeValidator.cpp:61(gdb) s(gdb) n(gdb) break AbstractStringValidator.cpp:152(gdb) sxercesc_3_1::XMLString::parseInt (toConvert=0x5e52c0, manager=0x5b6c98) at xercesc/util/XMLString.cpp:XMLSize_t trimmedStrLen = XMLString::stringLen(trimmedStr);xercesc_3_1::IconvLCPTranscoder::transcode (this=0x5b7d20, toTranscode=0x5e52d0, manager=0x5b6c98)at xercesc/util/Transcoders/Iconv/IconvTransService.cpp:432432while (toTranscode[srcCursor] || src)(gdb) break IconvTransService.cpp:432//找到了故障点。(gdb) s^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------------下面是宿主机(命令行) 执行 rsnc的过程,目的是找到 故障点,太费时间,所以 结合 backtrace 查找 故障点Breakpoint 4, bOS::XML::XMLHelper::initialize () at /opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp:4040xercesc_3_1::XMLPlatformUtils::Initialize();(gdb) xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 &xercesc_3_1::XMLUni::fgXercescDefaultLocale& &en_US&, nlsHome=0x0, panicHandler=0x0,memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:166166{xercesc_3_1::MemoryManagerImpl::MemoryManagerImpl (this=0x5b6c98) at ./xercesc/internal/MemoryManagerImpl.hpp:4848MemoryManagerImpl()xercesc_3_1::MemoryManager::MemoryManager (this=0x5b6c98) at ./xercesc/framework/MemoryManager.hpp:108108MemoryManager()xercesc_3_1::MemoryManagerImpl::MemoryManagerImpl (this=0x5b6c98) at ./xercesc/internal/MemoryManagerImpl.hpp:5050}xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 &xercesc_3_1::XMLUni::fgXercescDefaultLocale& &en_US&, nlsHome=0x0, panicHandler=0x0,memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:208208if (!panicHandler)xercesc_3_1::XMemory::operator new (size=4) at xercesc/util/XMemory.cpp:3434{xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation (ptrSize=4) at ./xercesc/util/PlatformUtils.hpp:813813XMLSize_t current = ptrSize %xercesc_3_1::XMemory::operator new (size=4) at xercesc/util/XMemory.cpp:4141);xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:3737{xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:4646if(memptr==NULL && size!=0)xercesc_3_1::XMemory::operator new (size=4) at xercesc/util/XMemory.cpp:4242*(MemoryManager**)block = XMLPlatformUtils::fgMemoryMxercesc_3_1::DefaultPanicHandler::DefaultPanicHandler (this=0x5b6cb0) at ./xercesc/util/DefaultPanicHandler.hpp:4646DefaultPanicHandler(){};xercesc_3_1::XMemory::XMemory (this=0x5b6cb0) at ./xercesc/util/XMemory.hpp:132132}xercesc_3_1::PanicHandler::PanicHandler (this=0x5b6cb0) at ./xercesc/util/PanicHandler.hpp:7070PanicHandler(){};xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 &xercesc_3_1::XMLUni::fgXercescDefaultLocale& &en_US&, nlsHome=0x0, panicHandler=0x0,memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:223223endianTest.ch = 1;xercesc_3_1::XMLPlatformUtils::makeMutexMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:725725XMLMutexMgr* mgr = NULL;xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:6363assert(manager != 0);xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation (ptrSize=4) at ./xercesc/util/PlatformUtils.hpp:813813XMLSize_t current = ptrSize %xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:6868void* const block = manager-&allocate(headerSize + size);xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:3737{xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:4646if(memptr==NULL && size!=0)xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:6969*(MemoryManager**)block =xercesc_3_1::PosixMutexMgr::PosixMutexMgr (this=0x5b6cc0) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:4444PosixMutexMgr::PosixMutexMgr()xercesc_3_1::XMLMutexMgr::XMLMutexMgr (this=0x5b6cc0) at ./xercesc/util/XMLMutexMgr.hpp:3636XMLMutexMgr() {}xercesc_3_1::XMemory::XMemory (this=0x5b6cc0) at ./xercesc/util/XMemory.hpp:132132}xercesc_3_1::PosixMutexMgr::PosixMutexMgr (this=0x5b6cc0) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:4646}xercesc_3_1::XMLPlatformUtils::makeMutexMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:737737xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 &xercesc_3_1::XMLUni::fgXercescDefaultLocale& &en_US&, nlsHome=0x0, panicHandler=0x0,memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:249249fgFileMgr= makeFileMgr(fgMemoryManager);xercesc_3_1::XMLPlatformUtils::makeFileMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:504504XMLFileMgr* mgr = NULL;xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:6363assert(manager != 0);xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation (ptrSize=4) at ./xercesc/util/PlatformUtils.hpp:813813XMLSize_t current = ptrSize %xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:3737{xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:4646if(memptr==NULL && size!=0)xercesc_3_1::XMemory::operator new (size=4) at xercesc/util/XMemory.cpp:4242*(MemoryManager**)block = XMLPlatformUtils::fgMemoryMxercesc_3_1::DefaultPanicHandler::DefaultPanicHandler (this=0x5b6cb0) at ./xercesc/util/DefaultPanicHandler.hpp:4646DefaultPanicHandler(){};xercesc_3_1::XMemory::XMemory (this=0x5b6cb0) at ./xercesc/util/XMemory.hpp:132132}xercesc_3_1::PanicHandler::PanicHandler (this=0x5b6cb0) at ./xercesc/util/PanicHandler.hpp:7070PanicHandler(){};xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 &xercesc_3_1::XMLUni::fgXercescDefaultLocale& &en_US&, nlsHome=0x0, panicHandler=0x0,memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:223223endianTest.ch = 1;xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:6363assert(manager != 0);Breakpoint 1, xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation (ptrSize=4) at ./xercesc/util/PlatformUtils.hpp:813813XMLSize_t current = ptrSize %xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:6868void* const block = manager-&allocate(headerSize + size);Breakpoint 2, xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:3737{xercesc_3_1::MemoryManagerImpl::allocate (this=0x5b6c98, size=12) at xercesc/internal/MemoryManagerImpl.cpp:4646if(memptr==NULL && size!=0)xercesc_3_1::XMemory::operator new (size=4, manager=0x5b6c98) at xercesc/util/XMemory.cpp:6969*(MemoryManager**)block =xercesc_3_1::PosixMutexMgr::PosixMutexMgr (this=0x5b6cc0) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:4444PosixMutexMgr::PosixMutexMgr()xercesc_3_1::XMLMutexMgr::XMLMutexMgr (this=0x5b6cc0) at ./xercesc/util/XMLMutexMgr.hpp:3636XMLMutexMgr() {}xercesc_3_1::XMemory::XMemory (this=0x5b6cc0) at ./xercesc/util/XMemory.hpp:132132}xercesc_3_1::PosixMutexMgr::PosixMutexMgr (this=0x5b6cc0) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:4646}xercesc_3_1::XMLPlatformUtils::makeMutexMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:737737xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 &xercesc_3_1::XMLUni::fgXercescDefaultLocale& &en_US&, nlsHome=0x0, panicHandler=0x0,memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:249249fgFileMgr= makeFileMgr(fgMemoryManager);xercesc_3_1::XMLPlatformUtils::makeFileMgr (memmgr=0x5b6c98) at xercesc/util/PlatformUtils.cpp:504504XMLFileMgr* mgr = NULL;...循环 1065行xercesc_3_1::PosixMutexWrap::PosixMutexWrap (this=0x5b6cf8) at xercesc/util/MutexManagers/PosixMutexMgr.cpp:3838class PosixMutexWrap : public XMemory {xercesc_3_1::XMLPlatformUtils::Initialize (locale=0x4cebe0 &xercesc_3_1::XMLUni::fgXercescDefaultLocale& &en_US&, nlsHome=0x0, panicHandler=0x0,memoryManager=0x0) at xercesc/util/PlatformUtils.cpp:269269XMLInitializer::initializeTransService(); // TransService static data.xercesc_3_1::RefHashTableOf&xercesc_3_1::ENameMap, xercesc_3_1::StringHasher&::put (this=0x5b6d30,key=0x4ccf90 &xercesc_3_1::XMLUni::fgXMLChEncodingString&, valueToAdopt=0x5b6f90) at ./xercesc/util/RefHashTableOf.c:412412if (newBucket)key=0x4ccde0 &xercesc_3_1::XMLUni::fgUSASCIIEncodingString&, hashVal=@0xbed324ec: 2180388) at ./xercesc/util/RefHashTableOf.c:492492hashVal = fHasher.getHashVal(key, fHashModulus);key=0x4cce10 &xercesc_3_1::XMLUni::fgUSASCIIEncodingString4&, hashVal=@0xbed324ec: 93) at ./xercesc/util/RefHashTableOf.c:495495RefHashTableBucketElem&TVal&* curElem = fBucketList[hashVal];xercesc_3_1::StringHasher::getHashVal (this=0x5b6d48, key=0x4cce24 &xercesc_3_1::XMLUni::fgUTF8EncodingString&, mod=103)at ./xercesc/util/Hashers.hpp:4747}xercesc_3_1::XMLTransService::initTransService (this=0x5b6f48) at xercesc/util/TransService.cpp:227227gMappings-&put((void*)XMLUni::fgUSASCIIEncodingString, new ENameMapFor&XMLASCIITranscoder&(XMLUni::fgUSASCIIEncodingString));xercesc_3_1::XMemory::operator new (size=8) at xercesc/util/XMemory.cpp:4141);xercesc_3_1::XMLString::hash (tohash=0x4cce04 &xercesc_3_1::XMLUni::fgUSASCIIEncodingString3&, hashModulus=103) at ./xercesc/util/XMLString.hpp:if (tohash == 0 || *tohash == 0)encodingName=0x4ccb48 &xercesc_3_1::XMLUni::fgISO88591EncodingString&) at ./xercesc/util/TransENameMap.c:3232ENameMapFor&TType&::ENameMapFor(const XMLCh* const encodingName) :xercesc_3_1::ENameMap::ENameMap (this=0x5b7198, encodingName=0x4ccb48 &xercesc_3_1::XMLUni::fgISO88591EncodingString&)at ./xercesc/util/TransENameMap.hpp:75xercesc_3_1::XMLString::stringLen (src=0x4ccbbc &xercesc_3_1::XMLUni::fgISO88591EncodingString7&) at ./xercesc/util/XMLString.hpp:if (src == 0)encodingName=0x4ccbcc &xercesc_3_1::XMLUni::fgISO88591EncodingString8&) at ./xercesc/util/TransENameMap.c:3636}xercesc_3_1::RangeToken::addRange (this=0x5c2fc8, start=6155, end=6467) at xercesc/util/regx/RangeToken.cpp:335335fCaseIToken = 0;Sending packet: $X98ff0,4:?\001??#27...Packet received: OKSending packet: $QPassSignals:e;10;14;17;1a;1b;1c;21;24;25;2c;4c;#5f...Packet received: OKSending packet: $vCc:pc6b.-1#d9...Sending packet: $m2abd08,4#8e...Packet received: 1c00a0e3Sending packet: $X2abd08,4:?\001??#7b...Packet received: OKSending packet: $vCc:pcdf.-1#0b...------调试到此处,停止,并且 手机重启--------------------------------上面是 执行 rsnc的过程,目的是找到 故障点,太费时间,所以 结合 backtrace 查找 故障点------------------------------------------------------------------------/opt/cBPM-android/criteria-lin/src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cppxercesc_3_1::XMLPlatformUtils::Initialize();//程序至步于此,并且手机自动重启,说明xercesc_3_1有问题include/bOS/xercesc/util/PlatformUtils.cppinclude/bOS/xercesc/util/XercesDefs.hpp:#define XERCES_CPP_NAMESPACE_BEGIN namespace XERCES_CPP_NAMESPACE {--------------------将下面两个文件中xercesc_3_1替换为xercesc_3_0[root@localhost criteria-lin]# pwd/opt/cBPM-android/criteria-lin./src/Criteria/Criteria.Libraries.bOS/XML/bOSXMLHelper.cpp./include/bOS/bOSXMLHelper.h--------------------编译xercesc_3_0静态库——以下 不看,不用了编译xerces-c (静态库)—CentOS 7— android-ndk[root@localhost xerces-c-3.0.0]# pwd/opt/cBPM-android/xerces-c-3.0.0[root@localhost xerces-c-3.0.0]# make cleanexport XERCES=&/opt/cBPM-android/xerces-c-3.0.0/&export NDK_ROOT=&/opt/android-on-linux/android-ndk-r8e&export SYSROOT=&$NDK_ROOT/platforms/android-14/arch-arm&export CFLAGS=&--pipe --sysroot=$SYSROOT -I$NDK_ROOT/sources/cxx-stl/stlport/stlport -I$NDK_ROOT/platforms/android-14/arch-arm/usr/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/include -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include-fixed -I$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include&export CPPFLAGS=&$CFLAGS&export CXXFLAGS=&$CFLAGS&export LDFLAGS=&-L$SYSROOT/usr/lib/ -L$NDK_ROOT/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/cBPM-android/criteria-lin/lib -lstlport_static -lgcc -lc&export CPATH=&$NDK_ROOT/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin&export CPP=&$CPATH/arm-linux-androideabi-cpp&export CXX=&$CPATH/arm-linux-androideabi-g++&export CC=&$CPATH/arm-linux-androideabi-gcc&export LD=&$CPATH/arm-linux-androideabi-ld&export AR=&$CPATH/arm-linux-androideabi-ar&[root@localhost xerces-c-3.0.0]# 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.0.0]# make -j5[root@localhost xerces-c-3.0.0]# cp ./src/.libs/libxerces-c.a /opt/cBPM-android/criteria-lin/lib至此,成功编译 xerces-c-3.0.0 静态库---------------------------------xercesc/util/XMLAbstractDoubleFloat.cpp:431:27: error: 'struct lconv' has no member named 'decimal_point'[root@localhost xerces-c-3.0.0]# gedit ./src/xercesc/util/XMLAbstractDoubleFloat.cpp//lconv* lc = localeconv();//char delimiter = *lc-&decimal_char delimiter = '.';//把localeconv()调用给绕过去了保存,重新编译xerces-c (静态库)---------------------------------/usr/include/curl/curlbuild.h:1:27: fatal error: bits/wordsize.h: No such file or directory/usr/include/curl/curlbuild.h:4:26: fatal error: curlbuild-32.h: No such file or directory[root@localhost xerces-c-3.0.0]# find /usr/include/ -name wordsize.h/usr/include/bits/wordsize.hyum install libcurl-devel.i686--------------------编译xercesc_3_0静态库——以上 不看,不用了------------------------------------------------------------------------[root@localhost lib]# /opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gdb(gdb) file executer 进行调试(gdb) listor l(gdb) break func(gdb) break 22(gdb) info br(gdb) continueor c// 这里不能用 run(gdb) nextor n(gdb) print or presult(gdb) finish// 跳出func函数(gdb) next(gdb) quit建立连接后进行gdb远程调试和gdb本地调试方法相同----------------------------------/opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/WorkflowListener.cpp注释掉两行:(取消注释,会出现上面问题,有待解决)/opt/cBPM-android/criteria-lin/src/Criteria/Criteria.WorkflowEngine/events/BaseWorkflowEvent.cpp==============================下面不用看// 上面过程 重新 做一遍,使用 API level 15, NDK 9,arm-linux-androideabi-4.7,因为 我的手机2011年买的,Android 4.0(Ice Cream Sandwich冰淇淋三明治)[root@localhost android-on-linux]# wget -c /android/ndk/android-ndk-r8-linux-x86.tar.bz2[root@localhost android-on-linux]# wget -c /android/ndk/android-ndk-r8e-linux-x86_64.tar.bz2[root@localhost android-on-linux]# wget -c /android/ndk/android-ndk-r10d-linux-x86_64.tar.bz2==============================下面不用看解决方法:对比 helloworld[root@localhost lib]# adb pull /data/data/helloworldcpp .877 KB/s (102700 bytes in 0.114s)[root@localhost lib]# lsexecuterlibc.solibiconv.so.2libLibraries.solibstdc++.solibxerces-c-3.1.sotemp.txthelloworldlibiconv.alibiconv.so.2.5.1libsqlite.alibWorkflowEngineD.alibxerces-c.ahelloworldcpplibiconv.solibLibraries.alibsqlite.solibWorkflowEngineD.sotemp2.txt[root@localhost lib]# ********---------------------------********库位置:[root@localhost criteria-lin]# cd /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/[root@localhost lib]# lscrtbegin_dynamic.ocrtend_so.olibdl.solibGLESv3.solibmediandk.solibOpenSLES.solibz.acrtbegin_so.olibandroid.solibEGL.solibjnigraphics.solibm_hard.alibstdc++.alibz.socrtbegin_static.olibc.alibGLESv1_CM.soliblog.solibm.solibstdc++.sorscrtend_android.olibc.solibGLESv2.solibm.alibOpenMAXAL.solibthread_db.so[root@localhost lib]# ls /opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/libs/armeabi-v7alibstlport_shared.solibstlport.solibstlport_static.athumb[root@localhost lib]# ls /opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7aincludelibgnustl_shared.solibgnustl_static.alibsupc++.athumb[root@localhost lib]# ls /opt/cBPM-android/criteria-lin/liblibiconv.alibiconv.so.2libLibraries.alibsqlite.alibWorkflowEngineD.alibxerces-c-3.1.solibiconv.solibiconv.so.2.5.1libLibraries.solibsqlite.solibWorkflowEngineD.solibxerces-c.a[root@localhost lib]# ********---------------------------******** //从手机上复制库文件libsqlite.so,便于调试系统adb pull &remote& &local&adb push &local& &remote&adb pull /system/lib/libsqlite.so /opt/cBPM-android/criteria-lin/libadb pull /system/lib/ /opt/cBPM-android/mb526-all-lib+++++++++++++src/Criteria/Criteria.Tools/Criteria.Tools.Executor/Tools.Executor.dependline 7163 /opt/cBPM-android/criteria-lin/include/bOS/selfded.h+++++++++++++编译结果:[root@localhost android-ndk-r10d]# ll /usr/lib64/libLibraries.so-rwxr-xr-x. 1 root root 月16 11:09 /usr/lib64/libLibraries.so[root@localhost android-ndk-r10d]# ll /usr/lib64/libWorkflowEngineD.so -rwxr-xr-x. 1 root root 月16 11:11 /usr/lib64/libWorkflowEngineD.so[root@localhost android-ndk-r10d]# +++++++++++++编译Libraries 和 WorkflowEngineD 共享库后,手动 编译 executerexport ARMGXX=&/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++&$ARMGXX -L/opt/cBPM-android/criteria-lin/lib -L/opt/android-on-linux/android-ndk-r8e/sources/cxx-stl/stlport/libs/armeabi-v7a -L/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/ -L/opt/android-on-linux/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/armv7-a/ -o /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/executer /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtbegin_static.o /opt/cBPM-android/criteria-lin/bin/Criteria/Debug/Tools.Executor/src/main.o-static -nostdlib -Wl,-dy -ldl /opt/cBPM-android/criteria-lin/lib/libc.so -Wl,-dn-lgcc -lstlport_static -lsqlite -lxerces-c -lLibraries -lWorkflowEngineD /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/crtend_android.o2& log.txtcat log.txt | cut -d: -f1 | uniq-Wl,-dn -lLibraries -lWorkflowEngineD -lxerces-c -lsqlite -lstdc++ -lc -lstlport_static -Wl,-dy静态库位置:/opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib//opt/cBPM-android/criteria-lin/lib/[root@localhost criteria-lin]# cd /opt/android-on-linux/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/[root@localhost lib]# lscrtbegin_dynamic.ocrtend_so.olibdl.solibGLESv3.solibmediandk.solibOpenSLES.solibz.acrtbegin_so.olibandroid.solibEGL.solibjnigraphics.solibm_hard.alibstdc++.alibz.socrtbegin_static.olibc.alibGLESv1_CM.soliblog.solibm.solibstdc++.sorscrtend_android.olibc.solibGLESv2.solibm.alibOpenMAXAL}

我要回帖

更多关于 open keyval 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信