ndk-build编译问题之找不到-lXXX

在使用NDK-build编译SO文件时遇到找不到-l库(如-lopenal)的问题,尽管编译日志显示库已成功编译。问题在于未正确指定目标架构。解决方法是在android.mk中确认LOCAL_LDLIBS路径和APP_ABI设置,确保与项目所需架构匹配,例如设置`ndk-build APP_ABI="armeabi"`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在用ndk-build编译so文件时,有时会提示找不到某个-lXXX(比如,-lopenal,-legal等等,这一般是我们引用的模块化的功能类库,在你的项目中能找到)。

比如提示:cannot find -lopenal

但是查看ndk-build的编译日志,其中有openal完整译日 志,并且没有出错,输出了


说明openal模块编译成功了。并成功生成了libopenal.so,这个文件位于项目目录 libs/arm64-v8a/libopenal.so

arm64-v8a是ndk-build编译的默认架构链接库。

所有我们现在要查看编译架构及openal模块配置在哪里???

ndk-build就是针对C的编译,所在android工程上肯定在jni目录下的android.mk里有配置

代码块如下 :

......

LOCAL_MODULE := openal

SRC_FILES := $(wildcard $(LOCAL_PATH)/../../../common/openal/*.c)

......

LOCAL_SHARED_LIBRARIES := libopenal

LOCAL_LDLIBS := -L$(LOCAL_PATH)/../libs/armeabi 

LOCAL_LDLIBS += -lz -lm -ldl -lGLESv2 -lEGL -llog -lopenal

从上面配置可以明白,该工程是需要指定固定的编译架构为armeabi,ndk-build支持指定编译架构的参数项APP_ABI="armeabi",也可支持多个,分空格分隔如“armeabi x86”

所以原因是需要根据项目需要指定编译架构:

ndk-build APP_ABI="armeabi"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值