作者:mobiledu2502875993 | 来源:互联网 | 2023-09-17 10:39
前言
笔者尝试在win10下,编译android版本的libmp3lame,第一次尝试这样做,为后面编译ffmpeg做准备
一、安装MSYS2
下载地址:MSYS2
安装完成后执行如下命令
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
安装所需要的工具链
二、下载android NDK
下载地址:不受支持的 NDK 下载 | Android NDK | Android Developers
笔者没有单独下载,因为在配置Qt for android时,已经自动下载完成了
三、下载libmp3lame源码
下载地址:LAME MP3 Encoder :: Software Downloads
下载完成后,解压到一个没有中文、空格的目录中
四、编译源码
1.编写编译脚本,如下所示
#!/bin/bash
#NDK目录
NDK=E:/software/android/commandlinetools-win-6609375_latest/ndk/22.1.7171670HOST_TAG=windows-x86_64
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG
#安装目录
ANDROID_LIB_PATH="$(pwd)/install_arm64-v8a"API=24function build_android_arm
{
echo "build for android $CPU"
./configure \
--host=$HOST \
--target=android \
--enable-shared \
--disable-shared \
--enable-static \
--prefix="$ANDROID_LIB_PATH/$CPU"
make clean
make -j8
make install
echo "building for android $CPU completed"
}CPU=armv8-a
HOST=aarch64-linux-android
export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
export AS=$TOOLCHAIN/bin/aarch64-linux-android-as
export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld
export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip
export CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
export CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
OPTIMIZE_CFLAGS="-march=$CPU"
export CFLAGS="-Os -fpic -fdeclspec $OPTIMIZE_CFLAGS"
export CPPFLAGS="-Os -fpic -fdeclspec $OPTIMIZE_CFLAGS"
build_android_arm
读者需要自己替换对应目录
笔者使用的api是24
将完成的脚本保存为build.sh,放到源码目录
2.编译
打开mingw64,跳转到源码目录中,运行脚本
sh build.sh
笔者大约等待了30min, 得到编译后的结果
注:
笔者发现,没有生成动态库,只生成了静态库

已编译完成的静态库
后记
笔者只编译了arm64-v8a的版本,其他版本笔者没有尝试,感兴趣的小伙伴可以自己尝试下