Android NDK编译lame

本文详细介绍了如何从源码编译lame库,包括下载最新版本、配置Android.mk和Application.mk文件、解决编译错误及清理无用文件的过程。

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

编译lame

下载最新的lame
http://lame.sourceforge.net/download.php

拷贝 lame.h (include目录下),至libmp3目录下

创建Android.mk,内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := lame
LOCAL_CLFAGS := -std=c99
LOCAL_LDLIBS := -llog

LOCAL_SRC_FILES := bitstream.c fft.c id3tag.c mpglib_interface.c presets.c quantize.c reservoir.c tables.c util.c VbrTag.c encoder.c gain_analysis.c lame.c newmdct.c psymodel.c quantize_pvt.c set_get.c takehiro.c vbrquantize.c version.c

include $(BUILD_SHARED_LIBRARY)

创建Application.mk,内容如下

APP_ABI := armeabi-v7a arm64-v8a x86_64
APP_MODULES := lame
APP_CFLAGS += -DSTDC_HEADERS
#APP_ABI:=x86_64
#APP_PLATFORM := android-21

执行

ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk APP_BUILD_SCRIPT=Android.mk

说明:

Application.mk里要加

APP_CFLAGS += -DSTDC_HEADERS

不然会报出

undefined reference to `bcopy'

等错误

删除非.c/.h文件:GNU autotools, Makefile.am Makefile.in libmp3lame_vc8.vcproj logoe.ico depcomp, folders i386 等无用文件。

编辑 utils.h。把

extern ieee754_float32_t fast_log2(ieee754_float32_t x);

替换为

extern float fast_log2(float x);

如果忘了替换,编译时会报出以下错误:

[armeabi] Compile thumb  : mp3lame <= bitstream.c  
In file included from jni/bitstream.c:36:0:  
jni/util.h:574:5: error: unknown type name 'ieee754_float32_t'  
jni/util.h:574:40: error: unknown type name 'ieee754_float32_t'  
make.exe: *** [obj/local/armeabi/objs/mp3bitstream.o] Error 1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值