用NDK编译开源项目

用NDK编译开源库的目的是得到.so文件,让JNI调用。编译的方法主要有两种:

1、书写Android.mk文件,使用ndk-build来编译。这种方法,关键在于书写Android.mk,对于工程复杂,目录复杂的源码,写Android.mk太费力,所以这种方法,很少用。

2、直接用NDK的GCC环境,利用开源库自己的configure / Makefile去编译。这个和一般的交叉编译没太多区别。


这里简单记录一下第二种方法。假设是在ubuntu环境,NDK的环境变量配置如下(在/etc/profile文件末尾添加):

export NDKROOT="/home/xxx/android-ndk-r8"
export PATH=$PATH:$NDKROOT

使用NDK的GCC编译开源项目:

(1)新建一个目录 install_dir(下面configure的--prefix选项会用到),用于存放编译后的头文件和库文件等。

xxx@ubuntu:~$ mkdir install_dir

(2)在终端设置NDK的GCC路径如下

xxx@ubuntu:~$ export SYSROOT=$NDKROOT/platforms/android-14/arch-arm
xxx@ubuntu:~$ export CC="$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"

(3)配置

进入开源项目根目录,执行configure

xxx@ubuntu:~/libupnp$ ./configure --host=arm --prefix=/home/xxx/install_dir/

或者用 --prefix 和 --exec-prefix 选项分别指定安装的头文件和库文件的位置,如下:

xxx@ubuntu:~/libupnp$ ./configure --host=arm --prefix=/home/xxx/install_dir/include/ --exec-prefix=/home/xxx/install_dir/lib/

注意:--host选项必须指定,否则configure会报错。

(4)编译和安装

xxx@ubuntu:~/libupnp$ make
xxx@ubuntu:~/libupnp$ make install

完成后,在configure的--prefix指定的install_dir文件夹中可以找到编译后得到的头文件和库文件。

(5)使用

若要使用编译出来的库,将install_dir中的头文件和库文件拷贝到自己的项目中,然后编写相应的Android.mk即可

关于如何调用第三方静态库动态库等的Android.mk的写法,可以参考android开发 NDK编译和使用静态库、动态库



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值