iOS 编译 lame 库,步骤及遇到的问题 总结

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"

你可能感兴趣的:(iOS 编译 lame 库,步骤及遇到的问题 总结)