Android NDK工程的编译和链接调试
2015-04-23 20:21
253 查看
前提条件:已经安装了JDK 6.0、android SDK、NDK r9和eclipsele4.2开发环境.
推荐下载Android开发的综合套件adt-bundle-windows-x86,再下载Android NDK既可以开始Android NDK程序的编程了。
1. 首先在eclipsele4.2上创建一个空的Android工程,无所谓,只要是一个Android工程就OK了。
![](http://img.blog.csdn.net/20150423201957841?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. 安装NDK开发的插件com.android.ide.eclipse.ndk_23.0.2.1259578.jar
![](http://img.blog.csdn.net/20150423202002584?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
之前的Eclipse版本是包含有这个插件的,不用自己手动安装这个插件;最新的Eclipse软件不包含有该插件,必须自己下载com.android.ide.eclipse.ndk_23.0.2.1259578.jar插
件,然后复制到eclipse\plugins的文件夹下,关闭Eclipse软件然后重启Eclipse,再进行操作就可以出现上图的实例。
![](http://img.blog.csdn.net/20150423201852003?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3. 配置NDK的路径
Eclipse的主菜单Windows—>preferences打开如下图,配置Android NDK的文件路径:
![](http://img.blog.csdn.net/20150423201857260?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后进行如下的操作:
![](http://img.blog.csdn.net/20150423201901722?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
出现如下所示,点击finish即可。
![](http://img.blog.csdn.net/20150423201906074?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
点击完成以后,观察Android工程,会发现多生成3个文件夹,如下图所示:
![](http://img.blog.csdn.net/20150423202026062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4. Andriod NDK代码的编写
Android NDK的开发用C或C++都可以,但是使用C或C++开发NDK时,应该使用C或C++的标准库提供的函数。
![](http://img.blog.csdn.net/20150423202030789?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5.在Android.mk文件和Application.mk文件中可以添加NDK编程需要支持的库,具体信息可以参考NDK编程的谷歌文档。
![](http://img.blog.csdn.net/20150423201919396?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Android NDK编程可以使用的C++的库:
![](http://img.blog.csdn.net/20150423202043472?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
添加C++的库的支持:
![](http://img.blog.csdn.net/20150423201933592?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
6. Android NDK的调试
![](http://img.blog.csdn.net/20150423202054470?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
再次编译Android工程会出现一下的错误提示:
![](http://img.blog.csdn.net/20150423201943935?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
按下图的操作进行该错误的屏蔽,再次编译程序就不会再弹出错误提示框了。
![](http://img.blog.csdn.net/20150423202107355?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Android NDK的调试使用GDB程序,并且Android NDK的调试原理是使用socket进行通信的,因此必须要有客户端和服务器端,并且Android虚拟机要打开。要调试Android NDK程序还必须自己编写调试的debug.mk和connect.mk文件,并将这两个文件拷贝到Android
NDK工程的文件目录下。
服务器端的debug.mk文件的编写:
![](http://img.blog.csdn.net/20150423202111536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
客户端connect.mk文件的编写:
![](http://img.blog.csdn.net/20150423202127542?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
打开cmd程序,开启Android NDK调试的服务端:
![](http://img.blog.csdn.net/20150423202016680?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
调试服务器端,不能关闭。
再打开一个cmd程序开启Android NDK调试的客户端:
![](http://img.blog.csdn.net/20150423202136324?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUVExMDg0MjgzMTcy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
注意:
D:\adt-bundle-windows-x86-20130219\android-ndk-r9\prebuilt\android-arm\gdbserver(调试符号)
D:\adt-bundle-windows-x86-20130219\android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows\bin(GDB)
这两个路径要添加环境变量以后就没有出现错误了。
推荐下载Android开发的综合套件adt-bundle-windows-x86,再下载Android NDK既可以开始Android NDK程序的编程了。
1. 首先在eclipsele4.2上创建一个空的Android工程,无所谓,只要是一个Android工程就OK了。
2. 安装NDK开发的插件com.android.ide.eclipse.ndk_23.0.2.1259578.jar
之前的Eclipse版本是包含有这个插件的,不用自己手动安装这个插件;最新的Eclipse软件不包含有该插件,必须自己下载com.android.ide.eclipse.ndk_23.0.2.1259578.jar插
件,然后复制到eclipse\plugins的文件夹下,关闭Eclipse软件然后重启Eclipse,再进行操作就可以出现上图的实例。
3. 配置NDK的路径
Eclipse的主菜单Windows—>preferences打开如下图,配置Android NDK的文件路径:
然后进行如下的操作:
出现如下所示,点击finish即可。
点击完成以后,观察Android工程,会发现多生成3个文件夹,如下图所示:
4. Andriod NDK代码的编写
Android NDK的开发用C或C++都可以,但是使用C或C++开发NDK时,应该使用C或C++的标准库提供的函数。
5.在Android.mk文件和Application.mk文件中可以添加NDK编程需要支持的库,具体信息可以参考NDK编程的谷歌文档。
Android NDK编程可以使用的C++的库:
添加C++的库的支持:
6. Android NDK的调试
再次编译Android工程会出现一下的错误提示:
按下图的操作进行该错误的屏蔽,再次编译程序就不会再弹出错误提示框了。
Android NDK的调试使用GDB程序,并且Android NDK的调试原理是使用socket进行通信的,因此必须要有客户端和服务器端,并且Android虚拟机要打开。要调试Android NDK程序还必须自己编写调试的debug.mk和connect.mk文件,并将这两个文件拷贝到Android
NDK工程的文件目录下。
服务器端的debug.mk文件的编写:
客户端connect.mk文件的编写:
打开cmd程序,开启Android NDK调试的服务端:
调试服务器端,不能关闭。
再打开一个cmd程序开启Android NDK调试的客户端:
注意:
D:\adt-bundle-windows-x86-20130219\android-ndk-r9\prebuilt\android-arm\gdbserver(调试符号)
D:\adt-bundle-windows-x86-20130219\android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows\bin(GDB)
这两个路径要添加环境变量以后就没有出现错误了。
相关文章推荐
- Ubuntu 下用 Eclipse 编译调试 Android NDK 工程
- Ubuntu 下用 Eclipse 编译调试 Android NDK 工程
- Ubuntu 下用 Eclipse 编译调试 Android NDK 工程
- vc6.0编译c++程序后在vc2008中调试的技巧(符号信息和链接)
- 如何解决VS2008编译Qt工程链接错误
- linux下预处理、编译、汇编、链接及gdb调试
- VC++6.0工具创建文件、编译、链接、运行以及调试基础-顺序结构
- Android NDK学习--编译和调试(Ubuntu+Eclipse+NDK)
- VC++6.0 IDE的工程用Code::Blocks来打开、编译、调试终极配置方案
- VC的IDE在编译链接时做了些什么--- 逆向工程写自己的vcspawn
- 软件调试笔记57 - 调试符号 : 编译和链接选项
- android NDK开发、编译、调试环境搭建与操作入门
- VC调试版本与发布版本编译链接选项差异和区别
- Windows下通过VC++6.0编译live555工程(可调试)
- Windows下通过VC++6.0编译live555工程(可调试)
- android NDK开发、编译、调试环境搭建与操作入门
- Android NDK开发、编译、调试环境搭建与操作入门
- Android NDK配、编译、调试
- android NDK开发、编译、调试环境搭建与操作入门
- CC2640之CCS工程导入及编译调试