android调用linux静态库,Mac下交叉编译android端静态库(.a)

实际开发过程中,遇到编译android库时,用到的第三方静态库不是android平台的,因此需要自己编译静态库使用。下载第三库的源码,然后解压。我编译的是libtool的源码,该源码有相应的makefile文件。我实际需要编译arm和x86两个平台的静态库。我使用的是android开发下载的sdk中有ndk-bundle里面的gcc编译器。

Arm平台编译

在终端上首先运行下面的脚本,配置使用编译arm的gcc编译器

export NDKROOT="/Users/zhangyang/android-sdk-macosx/ndk-bundle"

export SYSROOT="/Users/zhangyang/android-sdk-macosx/ndk-bundle/platforms/android-19/arch-arm"

export PREBUILT=$NDKROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64

export CC="$PREBUILT/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"

export CXX="$PREBUILT/bin/arm-linux-androideabi-g++ --sysroot=$SYSROOT -lh:/Users/zhangyang/android-sdk-macosx/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include"

export AR="$PREBUILT/bin/arm-linux-androideabi-ar --sysroot=$SYSROOT"

export RANLIB=$PREBUILT/bin/arm-linux-androideabi-ranlib

export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip

然后执行下面的命令,其中--prefix指的是编译后的库存放的目录,--host指的是编译平台

./configure --prefix=/Users/libtool_arm --host=arm-linux-androideabi

最后执行

make & make install

完成后就会在相应的目录下(/Users/libtool_arm)生成静态库。

x86平台编译,与arm平台类似,执行以下三条命令:

export NDKROOT="/Users/zhangyang/android-sdk-macosx/ndk-bundle"

export SYSROOT="/Users/zhangyang/android-sdk-macosx/ndk-bundle/platforms/android-19/arch-x86"

export PREBUILT=$NDKROOT/toolchains/x86-4.9/prebuilt/darwin-x86_64

export CC="$PREBUILT/bin/i686-linux-android-gcc --sysroot=$SYSROOT"

export CXX="$PREBUILT/bin/i686-linux-android-g++ --sysroot=$SYSROOT -lh:/Users/zhangyang/android-sdk-macosx/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include"

export AR="$PREBUILT/bin/i686-linux-android-ar"

export RANLIB=$PREBUILT/bin/i686-linux-android-ranlib

export STRIP=$PREBUILT/bin/i686-linux-android-strip

./configure --prefix=/Users/libtool_386 --host=i386-linux-android

make & make install

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值