Compile protobuf-2.4.1 code on NDK, version (android-ndk-r8-windows.) -
hi trying compile protobuf-2.4.1 code on ndk version (android-ndk-r8-windows.)
i have set below:
prebuilt=/cygdrive/d/d_drive/project/pr/ccore/code/ndk/android-ndk-r8-windows/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3 platform=/cygdrive/d/d_drive/project/pr/ccore/code/ndk/android-ndk-r8-windows/android-ndk-r8/platforms/android-4/arch-arm/ export cc="/cygdrive/d/d_drive/project/pr/ccore/code/ndk/android-ndk-r8-windows/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gcc" export cflags="-fpic -dandroid -nostdlib" export android_root="/cygdrive/d/d_drive/project/pr/ccore/code/ndk/android-ndk-r8-windows/android-ndk-r8" export ldflags="-wl,-rpath-link=$android_root/platforms/android-4/arch-arm/usr/lib/ -l$android_root/platforms/android-4/arch-arm/usr/lib/" export cppflags="-i$android_root/platforms/android-4/arch-arm/usr/include/" cppflags="-i$android_root/platforms/android-4/arch-arm/usr/include/" cppflags=$cppflags:"-i$android_root/sources/cxx-stl/gnu-libstdc++/include/" export cppflags ./configure --host=arm-eabi i getting following issues while doing ndk-build:
in file included d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:33: d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:41:18: error: string: no such file or directory d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:37:18: error: vector: no such file or directory d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:48:2: error: #error "no suitable threading library available." in file included d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:33: d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:136: error: 'string' in namespace 'std' not name type d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:647: error: expected unqualified-id before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:647: error: expected ')' before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:647: error: 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(...)' must not have variable number of arguments d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:647: error: expected ';' before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:663: error: 'string' in namespace 'std' not name type d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:742: error: expected unqualified-id before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:742: error: expected ')' before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:742: error: expected initializer before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.h:757: error: expected constructor, destructor, or type conversion before '*' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in function 'void google::protobuf::internal::verifyversion(int, int, const char*)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:62: error: 'versionstring' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:74: error: 'versionstring' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: @ global scope: d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:84: error: 'string' not name type d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:108: error: iso c++ forbids declaration of 'string' no type d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:108: error: expected ',' or '...' before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in function 'void google::protobuf::internal::defaultloghandler(google::protobuf::loglevel, const char*, int, int)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:114: error: 'message' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: @ global scope: d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:119: error: iso c++ forbids declaration of 'string' no type d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:119: error: expected ',' or '...' before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:123: error: expected initializer before '*' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:141: error: iso c++ forbids declaration of 'string' no type d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:141: error: expected ',' or '...' before '&' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in member function 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(int)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:142: error: 'message_' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:142: error: 'value' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in member function 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(const char*)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:147: error: 'message_' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in member function 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(char)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:168: error: 'message_' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: @ global scope: d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:169: error: redefinition of 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(int)' d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:141: error: 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(int)' defined here d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in member function 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(google::protobuf::uint)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:170: error: 'message_' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in member function 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(long int)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:171: error: 'message_' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in member function 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(long unsigned int)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:172: error: 'message_' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in member function 'google::protobuf::internal::logmessage& google::protobuf::internal::logmessage::operator<<(double)': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:173: error: 'message_' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: in member function 'void google::protobuf::internal::logmessage::finish()': d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:190: error: 'log_handler_' not member of 'google::protobuf::internal' d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:190: error: 'message_' not declared in scope d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc: @ global scope: d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:208: error: expected constructor, destructor, or type conversion before '*' token d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:377: error: expected '}' @ end of input d:/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/jni/src/google/protobuf/stubs/common.cc:377: error: expected '}' @ end of input /cygdrive/d/d_drive/project/pr/ccore/code/ndk/android-ndk-r8-windows/android-ndk-r8/build/core/build-binary.mk:243: recipe target `/cygdrive/d/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/obj/local/armeabi/objs/protobuf/src/google/protobuf/stubs/common.o' failed make: *** [/cygdrive/d/d_drive/project/pr/ccore/code/ndk/eclipse-sdk-3.7.1-win32/eclipse/workspace/cmnc/obj/local/armeabi/objs/protobuf/src/google/protobuf/stubs/common.o] error 1
this ndk documentation:
c++ stl support:
the standalone toolchain comes copy of gnu libstdc++ library, provides implementation of c++ standard template library. use it, need link proper library:
use -lstdc++ link against static library version. ensures required c++ stl code included final binary. ideal if generating single shared library or executable. recommended way it.
use -lgnustl_shared link against shared library version. required if have several related shared libraries or executables need run in same address space @ runtime (some global variables need defined uniquely, not possible if link static libstdc++ against each 1 of executables).
if use option, need ensure libgnustl_shared.so copied device code load properly. file at:
$toolchain/arm-linux-androideabi/lib/ arm toolchains
$toolchain/i686-android-linux/lib/ x86 ones.
$toolchain/mipsel-linux-android/lib/ mips toolchain
important: gnu libstdc++ licensed under gplv3 linking exception. see following url details:
http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01s02.html if cannot comply requirements, i.e. cannot redistribute shared library, not use in project.
the reason shared version of gnu libstdc++ not called libstdc++.so because conflict @ runtime system's own minimal c++ runtime, /system/lib/libstdc++.so. enforces new name gnu elf library. not problem static library.
Comments
Post a Comment