读者范围
本文适用读者,有linux使用基础,熟悉makefile,但无android.mk编写基础的程序员们。
部署
我的环境:
ubuntu_14.04_X64+ndk_r10_x64
linux下的ndk环境很简单,下载最新的ndk包,r10的时候是一个.bin文件。下载页面有提到怎么安装,这是一个自解压安装的文件,下载下来,
#sudo chmod 777 xxx.bin
#./xxx.bin
大约几分钟,当前命令行,也就是xxx.bin的目录会多出一个文件夹。
然后配置导出ndk目录--这一步google,不赘述
$gedit ~/.bashrc
内容如下
NDK=~/android-ndk-r4b
export NDK
export PATH=$PATH:$NDK
完成,保存。
重新加载配置文件
$source ~/.bashrc
如果执行ndk-build,不是command not found,则成功。
在ndk中使用opencv
其实很简单,sf.net上面搜索opencv,下载页面选android平台,会下载一个类是opencv4androidxxxx.zip的文件,同样解压出来。里面有一个samples的文件夹,你所需要的全部信息都可以在这里找到。参考这些sample里面的android.mk(当然还有application.mk)的写法,即可。你可以试着编译一个sample试试。如果没问题,能够正常生成.so文件,则没问题。
调试ndk命令
这是本文的要点。你很可能会需要编译很操蛋的cpp代码(这代码还很可能不是你写的,最关键的是,你还非用不可),可能编译过程,终端输出一堆问题,这时候,你可能会怀念makefile。没错,至少写makefile的时候,你很清楚编译用的gcc命令。而android.mk则没有在终端输出。
我将编译信息输出到文件的时候,发现文件里面的编译信息含有交叉编译的command
ndk-build V=1 2>&1 | tee mkinfo
好了,这时候去看看mkinfo里的编译命令吧。