How can I compile lame as static library(.a) for armv6 and armv7 of iPhone?

后端 未结 3 1409
既然无缘
既然无缘 2020-12-04 20:39

LAME(http://lame.sourceforge.net/) is a library written in c language. It can convert PCM sound files to MP3 files. I use it to convert sound files to MP3 files on iPhone. T

相关标签:
3条回答
  • 2020-12-04 21:02

    For Xcode 6.1, iOS SDK 8.1, I use below shell script:

    Support armv7, arm64, i686 and x86_64

    #!/bin/bash
    
    DEVELOPER=`xcode-select -print-path`
    
    SDK_VERSION="8.1"
    
    LAMEDIR="/Users/zuyuanzhou/Downloads/lame-3.99.5"
    
    mkdir build
    
    function build_lame()
    {
    make distclean
    
    ./configure \
    CFLAGS="-isysroot ${DEVELOPER}/Platforms/${SDK}.platform/Developer/SDKs/${SDK}${SDK_VERSION}.sdk" \
    CC="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch ${PLATFORM} -miphoneos-version-min=7.0 " \
    CPP="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr/bin/cpp" \
    --prefix="$LAMEDIR" \
    --host="$HOST" \
    --disable-shared \
    --enable-static \
    --disable-decoder \
    --disable-frontend
    
    make -j4
    cp "libmp3lame/.libs/libmp3lame.a" "build/libmp3lame-${PLATFORM}.a"
    }
    
    
    PLATFORM="i686"
    SDK="iPhoneSimulator"
    HOST="i686-apple-darwin14.1.0"
    build_lame
    
    PLATFORM="x86_64"
    build_lame
    
    PLATFORM="armv7"
    SDK="iPhoneOS"
    HOST="arm-apple-darwin9"
    build_lame
    
    PLATFORM="arm64"
    build_lame
    
    lipo -create build/* -output build/libmp3lame.a
    
    0 讨论(0)
  • 2020-12-04 21:05

    You're missing a few steps. First of all you don't want to build the frontend at all since you'll only be able to use LAME as a library anyhow. You also have to build the library statically otherwise you won't be able to build it into your project.

    Basically, you have to setup the source tree and compile it four times, once for the simulator (i686), iPhone (armv6), iPad (armv7) and iPhone 5 (armv7s) then lipo the .a files together into a universal library. The Xcode linker will sort everything else out for you when you compile the rest of your project.

    I used this shell script to build a universal libmp3lame.a file. Note this uses Xcode 4.3 paths and iOS 5.1 compilers.

    #!/bin/bash
    
    SDK_VERSION="5.1"
    
    mkdir build
    
    function build_lame()
    {
        make distclean
    
        ./configure \
            CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/${SDK}.platform/Developer/SDKs/${SDK}${SDK_VERSION}.sdk" \
            CC="/Applications/Xcode.app/Contents/Developer/Platforms/${SDK}.platform/Developer/usr/bin/gcc -arch ${PLATFORM}" \
            --prefix=/Users/mcrute/Desktop/lame \
            --host="arm-apple-darwin9" \
            --disable-shared \
            --enable-static \
            --disable-decoder \
            --disable-frontend
    
        make
        cp "libmp3lame/.libs/libmp3lame.a" "build/libmp3lame-${PLATFORM}.a"
    }
    
    PLATFORM="i686"
    SDK="iPhoneSimulator"
    build_lame
    
    PLATFORM="armv6"
    SDK="iPhoneOS"
    build_lame
    
    PLATFORM="armv7"
    build_lame
    
    PLATFORM="armv7s"
    build_lame
    
    lipo -create build/* -output build/libmp3lame.a
    

    Take the libmp3lame.a file from ./build along with the lame.h file from the include directory and drop them in your Xcode project and you should be ready to use lame in either the simulator or a real device.

    0 讨论(0)
  • 2020-12-04 21:11

    Thanks @mcrute for his great answer, and XCode 5 requirement update I have updated script. Hope it useful for new users.

    NOTE: Don't forget to update SDK_VERSION based on your system installation

    #!/bin/bash
    
    DEVELOPER=`xcode-select -print-path`
    
    SDK_VERSION="7.1"
    
    mkdir build
    
    function build_lame()
    {
        make distclean
    
        ./configure \
            CFLAGS="-isysroot ${DEVELOPER}/Platforms/${SDK}.platform/Developer/SDKs/${SDK}${SDK_VERSION}.sdk" \
            CC="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch ${PLATFORM} -miphoneos-version-min=7.0 " \
            --prefix=/Users/mcrute/Desktop/lame \
            --host="arm-apple-darwin9" \
            --disable-shared \
            --enable-static \
            --disable-decoder \
            --disable-frontend
    
        make -j4
        cp "libmp3lame/.libs/libmp3lame.a" "build/libmp3lame-${PLATFORM}.a"
    }
    
    PLATFORM="i686"
    SDK="iPhoneSimulator"
    build_lame
    
    PLATFORM="armv6"
    SDK="iPhoneOS"
    build_lame
    
    PLATFORM="armv7"
    build_lame
    
    PLATFORM="armv7s"
    build_lame
    
    lipo -create build/* -output build/libmp3lame.a
    
    0 讨论(0)
提交回复
热议问题