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

Posted ztguang_张同光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(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的主要内容,如果未能解决你的问题,请参考以下文章

windows eclipse c++怎么交叉编译linux

Eclipse CDT vs NetBeans C++ vs [重复]

STM32CubeIDE 编译C/C++程序

DEV C++如何显示运行结果

怎么设置eclipse能使编写C++时变量名自动补齐

深受C/C 程序员欢迎的11款IDE