(OK—C++程序) Eclipse C/C++ — CentOS 7 + android-ndk + eclipse-cpp-mars-R

从来好事天生俭,自古瓜儿苦后甜。这篇文章主要讲述(OK—C++程序) Eclipse C/C++ — CentOS 7 + android-ndk + eclipse-cpp-mars-R相关的知识,希望能为你提供帮助。
ftp://ftp.bluage.com/eclipse45/eclipse-cpp-mars-R-linux-gtk-x86_64.tar.gz
ftp://ftp.bluage.com/eclipse45/eclipse-cpp-mars-R-win32-x86_64.zip


CentOS 7  +  android-ndk-r10d-linux-x86_64.bin  +  eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
------------  compile c++  ------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
eclipse的设置如下:
Tool Chain Editor:
  Debug [Active]
  Cross GCC
  Gnu Make Builder
  Used tools:
      Cross GCC Compiler
      Cross G++ Compiler
      Cross GCC Linker
      Cross G++ Linker
      Cross GCC Archiver
      Cross GCC Assembler


cross settings:
arm-linux-androideabi-
/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64


cross g++ compiler:


Include paths(-I):
/opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/stlport
/opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/include
/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/include
/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/include-fixed
/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/include


Miscellaneous: --->
other flags: -c -fmessage-length=0 -DANDROID -fno-exceptions
勾选: -fPIC




cross g++ linker:
all options:  -nostdlib -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-21/arch-arm/usr/lib/
general:  -nostdlib


Libraries:
(-l)  stdc++      stlport      c
(-L)  /opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/libs/armeabi-v7a
          /opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib/
--------------------------
因为 手机上 是| /system/lib/libstlport.so   
所以,
[root@localhost armeabi-v7a]# pwd
/opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/libs/armeabi-v7a
[root@localhost armeabi-v7a]# adb pull /system/lib/libstlport.so .
[root@localhost armeabi-v7a]# chmod 755 libstlport.so
--------------------------




Miscellaneous:
Other options:
-R/opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib
Other objects:
/opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib/crtbegin_dynamic.o
/opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib/crtend_android.o


+++++++++++ eclipse编译过程  出错
> > > > > > > >
/opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_ostream.h:187: error: undefined reference to std::uncaught_exception()
collect2: error: ld returned 1 exit status
make: *** [helloworldcpp] 错误 1
> > > > > > > >


解决方法:
[root@localhost arm-linux-androideabi-4.9]# gedit /opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/stlport/stl/_ostream.h


将187行
          ~sentry()
              if (_M_str.flags() & ios_base::unitbuf)
#if !defined (_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT)
                  if (!uncaught_exception())
#endif
                      _M_str.flush();
         


修改为:


          ~sentry()
         




+++++++++++ eclipse编译过程
23:32:03 **** Incremental Build of configuration Debug for project helloworldcpp ****
make all
Building file: ../src/helloworldcpp.cpp
Invoking: Cross G++ Compiler
arm-linux-androideabi-g++ -I/opt/android-on-linux/android-ndk-r10d/sources/cxx-stl/stlport/stlport -I/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/include -I/opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/include -I/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/include-fixed -I/opt/android-on-linux/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/include -O0 -g3 -Wall -c -fmessage-length=0 -DANDROID -fno-exceptions -fPIC -MMD -MP -MF"src/helloworldcpp.d" -MT"src/helloworldcpp.d" -o "src/helloworldcpp.o" "../src/helloworldcpp.cpp"
Finished building: ../src/helloworldcpp.cpp


Building target: helloworldcpp
Invoking: Cross G++ Linker
arm-linux-androideabi-g++ -nostdlib -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-21/arch-arm/usr/lib/ -Xlinker -R/opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib -o "helloworldcpp"  ./src/helloworldcpp.o  /opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib/crtbegin_dynamic.o /opt/android-on-linux/android-ndk-r10d/platforms/android-21/arch-arm/usr/lib/crtend_android.o -lstdc++ -lstlport -lc
Finished building target: helloworldcpp




23:32:04 Build Finished (took 311ms)


+++++++++++


++++++++ 在CentOS 7
[root@localhost helloworldcpp]# pwd
/opt/eclipse-workspace/helloworldcpp
[root@localhost helloworldcpp]# ls
Debug  src
[root@localhost helloworldcpp]# cd Debug/
[root@localhost Debug]# pwd
/opt/eclipse-workspace/helloworldcpp/Debug
[root@localhost Debug]# ls
helloworldcpp  makefile  objects.mk  sources.mk  src
[root@localhost Debug]# adb push helloworldcpp /data/data/
4063 KB/s (102700 bytes in 0.024s)
[root@localhost Debug]#


+++++++++ Android (ARM)
[root@localhost Debug]# adb root
[root@localhost Debug]# adb shell
root@mb526:/ # cd data/data
root@mb526:/data/data # ./helloworldcpp                                                                             
!!!Hello World!!!
【(OK—C++程序) Eclipse C/C++ — CentOS 7 + android-ndk + eclipse-cpp-mars-R】


    推荐阅读