Android studio NDK问题

问题1: 使用NDK编译第三方库问题

使用NDK编译第三方库一般要指定如下:

#配置环境变量,后面的arm-linux-androideabi-gcc就会去这里面找
export PATH="$NDK_DIR/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/:$PATH"
#配置系统库lib和头文件
export SYS_ROOT="$NDK_DIR/platforms/android-8/arch-arm/"
#CC配置gcc编译器,指定系统的库和头文件目录, -march指定编译允许架构,armv7-a armv8-a
export CC="arm-linux-androideabi-gcc --sysroot=$SYS_ROOT -march=armv7-a -mfloat-abi=softfp"
# 配置链接器
export LD="arm-linux-androideabi-ld"

export AR="arm-linux-androideabi-ar"

export RANLIB="arm-linux-androideabi-ranlib"

export STRIP="arm-linux-androideabi-strip"

export CFLAGS="-mfpu=neon -mfloat-abi=softfp -O3 -fPIC -ldl" 

 通常,配置好后,执行开源软件的configure配置makefile,然后执行make和make install即可编译出第三方库的so;

但是、但是,往往会出现上面的CC和SYS_ROOT配置的文件不存在,

No such files;

为什么了?why?

原因在于从NDK16版本开始,不在使用gcc编译工具了,而使用clang编译,所以相关的文件目录已经变了,如

CC配置的编译器clang位于以下目录,LD、AR、RANLIB和STRIP都在下面这个目录可以找到:

ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin

注意:在选择clang编译器时,要根据配置的-march不同而不同 

SYS_ROOT配置的系统库位于:

ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\sysroot

 这样,基本上就能解决No such file的问题;现在网上很多的NDK编译demo,都是用的老版本NDK,照例抄下来不能运行往往都是这个问题

问题2: 

起初以为android studio的Ndk开发和eclipse一样,在命令行使用命令: $NDK/ndk-build进行编译生成,后来才发现这样不可以,及时你使用这种方法编译出so文件了,最终android studio编译的时候也会重新去生成so文件,android  studio的ndk用着还是挺方便的,就是前期你得自己配置gradle,如果你不配置很可能报错,说你的ndk废弃了deprecated;因为studio默认一个版本的sdk对应一个版本的ndk,如果着两者不匹配,就会报这个错;下面就是讲解配置这个ndk和解决这个问题:

1. 设置ndk路径

2. 如果你的sdk和ndk版本不匹配,需要在gradle里面配置使用废弃deprecated的ndk

3. 在gradle里面配置ndk参数;

最后,你的ndk就可以使用了,编译下载就会成功执行了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气好男人_Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值