lame 静态库编译

最近升级了系统到Mac OS X 10.10 并且更新了XCode6.1和iOS 8.1

之前app用到的libmp3lame.a静态库,也要支持64位的模拟器(x86_64)和64位的真机(arm64)指令集。需要重新编译

查阅了下资料,按照如下步骤,并做了些注释和改动

1.http://sourceforge.NET/projects/lame/files/lame/3.99/ 下载lame的最新版本解压到一个文件夹里例如 lame,全路径如下/Users/8wm/Desktop/lame


2.下载build的脚本,我这里使用的是国外一个朋友的分享

https://github.com/kewlbear/lame-ios-build

下载之后得到lame-build.sh拷贝到文件夹/Users/8wm/Desktop/lame


3.用bbedit或者其他编辑器打开这个脚本,按照注释修改


4.打开Terminals,

输入

cd /Users/8wm/Desktop/lame

chmod lame-build.sh

sudo -s#

输入系统密码

./lame-build.sh

开始编译,编译完成之后。生成fat-lame目录和thin-lame目录,分别存放合并所有指令集的静态库,以及各指令集的静态库.

根据所需,copy lame.h和libmp3lame.a文件project里,就可以正常使用了。

可以使用命令行,查看换个库支持的指令集。

lipo -info libmp3lame.a

Architectures in the fat file: libmp3lame.a are: armv7 armv7s i386 x86_64 arm64

以下是build的脚本,请注意黄色的字和注释。


[plain]  view plain  copy
  1. #!/bin/sh  
  2.   
  3. make distclean  
  4.   
  5. CONFIGURE_FLAGS="--disable-shared --disable-frontend"  
  6.   
  7. ARCHS="arm64 armv7s x86_64 i386 armv7"  
  8.   
  9. # directories  
  10. # SOURCE是下载lame源码包,解压后的目录,可以把sh脚本放到这个目录,source改为""  
  11. SOURCE=""  
  12. # FAT是所有指令集build后,输出的目录,所有静态库被合并成一个静态库  
  13. FAT="fat-lame"  
  14.   
  15. # SCRATCH是下载lame源码包,解压后的目录,必须是绝对路径  
  16. SCRATCH="/Users/8wm/Desktop/lame"  
  17. # must be an absolute path  
  18. # THIN 各自指令集build后输出的静态库所在的目录,每个指令集为一个静态库  
  19. THIN=`pwd`/"thin-lame"  
  20.   
  21. COMPILE="y"  
  22. LIPO="y"  
  23.   
  24. if [ "$*" ]  
  25. then  
  26.     if [ "$*" = "lipo" ]  
  27.     then  
  28.         # skip compile  
  29.         COMPILE=  
  30.     else  
  31.         ARCHS="$*"  
  32.         if [ $# -eq 1 ]  
  33.         then  
  34.             # skip lipo  
  35.             LIPO=  
  36.         fi  
  37.     fi  
  38. fi  
  39.   
  40. if [ "$COMPILE" ]  
  41. then  
  42.     CWD=`pwd`  
  43.     echo "$CWD/$SOURCE........."  
  44.     for ARCH in $ARCHS  
  45.     do  
  46.         echo "building $ARCH..."  
  47.         mkdir -p "$SCRATCH/$ARCH"  
  48.         cd "$SCRATCH/$ARCH"  
  49.   
  50.         if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]  
  51.         then  
  52.             PLATFORM="iPhoneSimulator"  
  53.             if [ "$ARCH" = "x86_64" ]  
  54.             then  
  55.                 SIMULATOR="-mios-simulator-version-min=7.0"  
  56.                         HOST=x86_64-apple-darwin  
  57.             else  
  58.                 SIMULATOR="-mios-simulator-version-min=5.0"  
  59.                         HOST=i386-apple-darwin  
  60.             fi  
  61.         else  
  62.             PLATFORM="iPhoneOS"  
  63.             SIMULATOR=  
  64.                     HOST=arm-apple-darwin  
  65.         fi  
  66.   
  67.         XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`  
  68.         CC="xcrun -sdk $XCRUN_SDK clang -arch $ARCH"  
  69.         #AS="$CWD/$SOURCE/extras/gas-preprocessor.pl $CC"  
  70.         CFLAGS="-arch $ARCH $SIMULATOR"  
  71.         CXXFLAGS="$CFLAGS"  
  72.         LDFLAGS="$CFLAGS"  
  73.   
  74.         CC=$CC $CWD/$SOURCE/configure \  
  75.             $CONFIGURE_FLAGS \  
  76.                     --host=$HOST \  
  77.             --prefix="$THIN/$ARCH" \  
  78.                     CC="$CC" CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS"  
  79.   
  80.         make -j3 install  
  81.         cd $CWD  
  82.     done  
  83. fi  
  84.   
  85. if [ "$LIPO" ]  
  86. then  
  87.     echo "building fat binaries..."  
  88.     mkdir -p $FAT/lib  
  89.     set - $ARCHS  
  90.     CWD=`pwd`  
  91.     cd $THIN/$1/lib  
  92.     for LIB in *.a  
  93.     do  
  94.         cd $CWD  
  95.         lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB  
  96.     done  
  97.   
  98.     cd $CWD  
  99.     cp -rf $THIN/$1/include $FAT  
  100. fi  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Windows环境下使用MSYS2编译FFmpeg静态库的步骤: 1. 安装MSYS2 首先需要下载并安装MSYS2,可以在官网上下载安装包:https://www.msys2.org/ 2. 安装编译工具和依赖项 打开MSYS2的终端,执行以下命令安装编译工具和依赖项: ``` pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-nasm git perl python3 ``` 3. 下载FFmpeg源码 从FFmpeg官网(https://ffmpeg.org/download.html)下载最新的源码包,解压到某个目录下。 4. 配置编译选项 在MSYS2的终端中进入FFmpeg源码目录,执行以下命令配置编译选项: ``` ./configure --disable-shared --enable-static --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-network --disable-iconv --disable-bzlib --disable-zlib --disable-lzma --disable-sdl2 --disable-xlib --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-libxcb-shape --disable-lzma --disable-iconv --disable-libass --disable-libbluray --disable-libcaca --disable-libfontconfig --disable-libfreetype --disable-libfribidi --disable-libgme --disable-libgsm --disable-libilbc --disable-libkvazaar --disable-libmodplug --disable-libmp3lame --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libopenh264 --disable-libopenjpeg --disable-libopus --disable-libpulse --disable-librsvg --disable-librtmp --disable-libshine --disable-libsmbclient --disable-libsnappy --disable-libsoxr --disable-libspeex --disable-libssh --disable-libtesseract --disable-libtheora --disable-libtwolame --disable-libv4l2 --disable-libvorbis --disable-libvpx --disable-libwebp --disable-libx264 --disable-libx265 --disable-libxvid --disable-lzma --disable-zlib --disable-opencl --disable-opengl --disable-openssl --disable-libxml2 --arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --pkg-config=pkg-config ``` 其中,--disable-shared和--enable-static表示编译静态库。 5. 编译并安装 执行以下命令编译并安装静态库: ``` make -j4 && make install ``` 其中,-j4表示使用4个线程编译,可以根据自己的CPU核心数进行调整。 6. 查找静态库 编译完成后,在MSYS2的终端中执行以下命令查找静态库: ``` find / -name '*.a' | grep ffmpeg ``` 可以看到类似如下的输出: ``` /usr/local/lib/libavcodec.a /usr/local/lib/libavdevice.a /usr/local/lib/libavfilter.a /usr/local/lib/libavformat.a /usr/local/lib/libavutil.a /usr/local/lib/libpostproc.a /usr/local/lib/libswresample.a /usr/local/lib/libswscale.a ``` 这些就是编译出来的FFmpeg静态库。 7. 使用静态库 在使用时,只需要将需要的静态库链接到自己的程序中即可。以使用libavformat静态库为例,在编译时需要加上-lavformat参数: ``` g++ -o myapp myapp.cpp -lavformat ``` 注意,编译时还需要加上其他依赖的链接参数,具体可以参考FFmpeg官方文档:https://ffmpeg.org/documentation.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值