1,下载lame库 https://sourceforge.net/projects/lame/files/lame/. 自己选择一个版本进行编译吧,我一般都是选择最新的
2,下载build的脚本,
https://github.com/kewlbear/lame-ios-build
下载之后得到build-lame.sh拷贝到文件夹 自己下载之后解压的lame库 比如我建立的桌面 /Users/djy/Destop/mp3lib/下
3,修改你解压的lame目录名称(它本来是带有版本号的,要改成lame,因为在这个build-lame.sh脚本中是指定了名称为lame,当然你也可以修改脚本中名称);
4打开Terminals,
输入
cd /Users/djy/Destop/mp3lib/
chmod 777 build-lame.sh (这步要做,不然会告诉你找不到这个文件,这是改变这个文件的读写权限)
sudo ./build-lame.sh (sudo 最高权限 执行这个脚本)
5,如果你发现执行之后报错了,在检测scratch-lame目录下的log日志时候发现,有错误xcrun --sdk iphoneos --show-sdk-path
xcrun: error: SDK "iphoneos" cannot be located
别慌,这肯定是你的Xcode 路径问题终端运行下djy$ xcode-select --print-path
/Library/Developer/CommandLineTools
出来了这个东西,xcode命令行工具,估计是最近你安装过命令行工具,或者你mac中存在好几个Xcode版本。
再执行djy$ xcodebuild -showsdks
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
那我们就指定一下你自己要用那个Xcode版本路径djy$ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
6,我们继续执行 sudo ./lame-build.sh
开始编译,编译完成之后。生成fat-lame目录和thin-lame目录,分别存放合并所有指令集的静态库,以及各指令集的静态库.
根据所需,copy lame.h和libmp3lame.a文件到project里,就可以正常使用了。
7,查看.a库支持的指令集。
lipo -info libmp3lame.a
Architectures in the fat file: libmp3lame.a are: armv7 armv7s i386 x86_64 arm64
或者使用 file libmp3lame.a
djy$ file libmp3lame.a
libmp3lame.a: Mach-O universal binary with 5 architectures: [i386:current ar archive random library] [arm64]
libmp3lame.a (for architecture i386): current ar archive random library
libmp3lame.a (for architecture armv7): current ar archive random library
libmp3lame.a (for architecture armv7s): current ar archive random library
libmp3lame.a (for architecture x86_64): current ar archive random library
libmp3lame.a (for architecture arm64): current ar archive random library
8脚本中 部分命令解析
# directories
# SOURCE是下载lame源码包,解压后的目录,可以把sh脚本放到这个目录,source改为””,这里也和放在同级目录,什么都不改
SOURCE=""
# FAT是所有指令集build后,输出的目录,所有静态库被合并成一个静态库
FAT="fat-lame"
# SCRATCH是下载lame源码包,解压后的目录,必须是绝对路径
SCRATCH="/Users/8wm/Desktop/lame"
# must be an absolute path
# THIN 各自指令集build后输出的静态库所在的目录,每个指令集为一个静态库
THIN=`pwd`/"thin-lame"