Hi.
Thank you for the instruction.
I am currently trying to port one C++ library (the more detail is at
http://groups.google.com/group/android-ndk/browse_thread/thread/10f2e02c5d6857cb/2bb674b03ccdf801
) and realized that it's raising error because NDK does not have
iostream which depends on STL (I am C++ newbie. sorry if this
explanation is wrong).
I copied the stlport in the zip to my source dir and modified
Android.mk to include the stlport, but facing various problems. I
would appreciate if you could spot something I did wrong.
$ ls sources/zinnia/
.git/ Android.mk example.c example.cpp stlport/
zinnia-0.05/
$ tail sources/zinnia/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := zinnia
LOCAL_SRC_FILES := example.cpp \
zinnia-0.05/zinnia.cpp
LOCAL_CFLAGS := -I$(LOCAL_PATH)/stlport
When I ran make command, I got a error complaining that std::pair are
defined twice.
$ make APP=zinnia -B
Android NDK: Building for application 'zinnia'
Compile++ thumb: zinnia <= sources/zinnia/example.cpp
In file included from sources/zinnia/stlport/stl/_algobase.h:50,
from sources/zinnia/stlport/stl/_alloc.h:47,
from sources/zinnia/stlport/stl/_string.h:23,
from sources/zinnia/stlport/stl/_ios_base.h:34,
from sources/zinnia/stlport/stl/_ios.h:23,
from sources/zinnia/stlport/stl/_istream.h:27,
from sources/zinnia/stlport/iostream:39,
from sources/zinnia/stlport/iostream.h:24,
from sources/zinnia/example.cpp:1:
sources/zinnia/stlport/stl/_pair.h:45: error: redefinition of
'struct std::pair<_T1, _T2>'
build/platforms/android-1.5/arch-arm/usr/include/stl_pair.h:64:
error: previous definition of 'struct std::pair<_T1, _T2>'
sources/zinnia/stlport/stl/_pair.h:73: error: redefinition of
'template<class _T1, class _T2> bool std::operator==(const
std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)'
I commented out sources/zinnia/stlport/stl/_pair.h and now getting
these errors. Looks it's complaining that these are not defined
(exampe.cpp is just a sample c++ code at
http://zinnia.sourceforge.net/)
* std::locale::_M_use_facet(std::locale::id const&) const
* std::ios_base::_M_throw_failure()
* std::locale::locale(std::locale const&)
* std::locale::~locale()
$ make APP=zinnia -B
Android NDK: Building for application 'zinnia'
Compile++ thumb: zinnia <= sources/zinnia/example.cpp
Compile++ thumb: zinnia <= sources/zinnia/zinnia-0.05/zinnia.cpp
SharedLibrary : libzinnia.so
out/apps/zinnia/android-1.5-arm/objs/zinnia/zinnia-0.05/zinnia.o: In
function `main':
sources/zinnia/zinnia-0.05/zinnia.cpp:11: multiple definition of
`main'
out/apps/zinnia/android-1.5-arm/objs/zinnia/example.o:sources/zinnia/
example.cpp:9: first defined here
/Applications/android-ndk-1.5_r1/build/prebuilt/darwin-x86/arm-
eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/../../../../arm-eabi/bin/ld:
Warning: size of symbol `main' changed from 988 in out/apps/zinnia/
android-1.5-arm/objs/zinnia/example.o to 4 in out/apps/zinnia/
android-1.5-arm/objs/zinnia/zinnia-0.05/zinnia.o
out/apps/zinnia/android-1.5-arm/objs/zinnia/example.o: In function
`std::num_put<char, std::ostreambuf_iterator<char,
std::char_traits<char> > >* std::_UseFacet<std::num_put<char,
std::ostreambuf_iterator<char, std::char_traits<char> > > >
(std::locale const&, std::num_put<char, std::ostreambuf_iterator<char,
std::char_traits<char> > > const*)':
example.cpp:
(.gnu.linkonce.t._ZSt9_UseFacetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEPT_RKSt6localePKS6_
+0x10): undefined reference to `std::locale::_M_use_facet
(std::locale::id const&) const'
out/apps/zinnia/android-1.5-arm/objs/zinnia/example.o: In function
`bool stlp_priv::__init_bostr<char, std::char_traits<char> >
(std::basic_ostream<char, std::char_traits<char> >&)':
example.cpp:
(.gnu.linkonce.t._ZN9stlp_priv12__init_bostrIcSt11char_traitsIcEEEbRSt13basic_ostreamIT_T0_E
+0xd4): undefined reference to `std::ios_base::_M_throw_failure()'
out/apps/zinnia/android-1.5-arm/objs/zinnia/example.o: In function
`std::basic_ostream<char, std::char_traits<char> >&
stlp_priv::__put_num<char, std::char_traits<char>, double>
(std::basic_ostream<char, std::char_traits<char> >&, double)':
example.cpp:
(.gnu.linkonce.t._ZN9stlp_priv9__put_numIcSt11char_traitsIcEdEERSt13basic_ostreamIT_T0_ES7_T1_
+0xbc): undefined reference to `std::ios_base::_M_throw_failure()'
example.cpp:
(.gnu.linkonce.t._ZN9stlp_priv9__put_numIcSt11char_traitsIcEdEERSt13basic_ostreamIT_T0_ES7_T1_
+0xd8): undefined reference to `std::locale::locale(std::locale
const&)'
example.cpp:
(.gnu.linkonce.t._ZN9stlp_priv9__put_numIcSt11char_traitsIcEdEERSt13basic_ostreamIT_T0_ES7_T1_
+0x144): undefined reference to `std::locale::~locale()'
out/apps/zinnia/android-1.5-arm/objs/zinnia/example.o: In function
`std::basic_ostream<char, std::char_traits<char> >::put(char)':
example.cpp:(.gnu.linkonce.t._ZNSo3putEc+0x114): undefined reference
to `std::ios_base::_M_throw_failure()'
out/apps/zinnia/android-1.5-arm/objs/zinnia/example.o: In function
`std::basic_ostream<char, std::char_traits<char> >& std::endl<char,
std::char_traits<char> >(std::basic_ostream<char,
std::char_traits<char> >&)':
example.cpp:
(.gnu.linkonce.t._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
+0x7c): undefined reference to `std::ios_base::_M_throw_failure()'
out/apps/zinnia/android-1.5-arm/objs/zinnia/example.o: In function
`std::basic_ostream<char, std::char_traits<char> >::_M_put_nowiden
(char const*)':
example.cpp:(.gnu.linkonce.t._ZNSo14_M_put_nowidenEPKc+0x94):
undefined reference to `std::ios_base::_M_throw_failure()'
example.cpp:(.gnu.linkonce.t._ZNSo14_M_put_nowidenEPKc+0x130):
undefined reference to `std::ios_base::_M_throw_failure()'
out/apps/zinnia/android-1.5-arm/objs/zinnia/example.o: In function
`main':
example.cpp:(.text.main+0x4): undefined reference to
`zinnia::Recognizer::create()'
example.cpp:(.text.main+0x30): undefined reference to
`zinnia::Character::create()'
example.cpp:(.text.main+0x3c4): undefined reference to `std::cout'
example.cpp:(.text.main+0x3d8): undefined reference to `std::cerr'
out/apps/zinnia/android-1.5-arm/objs/zinnia/zinnia-0.05/zinnia.o: In
function `main':
zinnia.cpp:(.text.main+0x0): undefined reference to `zinnia_do'
collect2: ld returned 1 exit status
make: *** [out/apps/zinnia/android-1.5-arm/libzinnia.so] Error 1
Thanks.
Makoto