iPhone SDK 4.3 libav compiling problem

后端 未结 1 1521
既然无缘
既然无缘 2020-12-23 23:54

I faced with strange problem. I installed iPhone SDK 4.3 and xCode 4 and now I can\'t compile libav from ffmpeg for ARMv6 architecture. This is my script to compile it (it w

相关标签:
1条回答
  • 2020-12-24 00:34

    Updated Post

    Here is an updated script that removes armv6, adds armv7s, uses the iOS 6.0 SDK, and fixes issues with changes to the lipo tool. Make sure you have the latest gas-preprocessor.pl from github in /usr/local/bin:

    rm -r ./compiled
    
    # configure for armv7 build
    ./configure \
    --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
    --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
    --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk \
    --extra-ldflags=-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/system \
    --target-os=darwin \
    --arch=arm \
    --cpu=cortex-a8 \
    --extra-cflags='-arch armv7' \
    --extra-ldflags='-arch armv7' \
    --extra-cflags='-mfpu=neon -mfloat-abi=softfp -mvectorize-with-neon-quad' \
    --prefix=compiled/armv7 \
    --enable-pic \
    --enable-neon \
    --enable-cross-compile \
    --enable-optimizations \
    --disable-debug \
    --disable-armv5te \
    --disable-armv6 \
    --disable-armv6t2 \
    --disable-armvfp \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffserver \
    --disable-ffprobe \
    --disable-doc
    
    # build for armv7
    make clean
    make && make install
    
    # configure for armv7s build
    ./configure \
    --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
    --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
    --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk \
    --extra-ldflags=-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/system \
    --target-os=darwin \
    --arch=arm \
    --cpu=cortex-a8 \
    --extra-cflags='-arch armv7s' \
    --extra-ldflags='-arch armv7s' \
    --extra-cflags='-mfpu=neon -mfloat-abi=softfp -mvectorize-with-neon-quad' \
    --prefix=compiled/armv7s \
    --enable-pic \
    --enable-neon \
    --enable-cross-compile \
    --enable-optimizations \
    --disable-debug \
    --disable-armv5te \
    --disable-armv6 \
    --disable-armv6t2 \
    --disable-armvfp \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffserver \
    --disable-ffprobe \
    --disable-doc
    
    # build for armv7s
    make clean
    make && make install
    
    # configure for i386 build
    ./configure \
    --cc=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc \
    --as='gas-preprocessor.pl /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc' \
    --sysroot=/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk \
    --extra-ldflags=-L/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/usr/lib/system \
    --target-os=darwin \
    --arch=i386 \
    --cpu=i386 \
    --extra-cflags='-arch i386' \
    --extra-ldflags='-arch i386' \
    --prefix=compiled/i386 \
    --enable-cross-compile \
    --disable-mmx \
    --disable-armv5te \
    --disable-armv6 \
    --disable-armv6t2 \
    --disable-armvfp \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffserver \
    --disable-ffprobe \
    --disable-doc
    
    # build for i386
    make clean
    make && make install
    
    # make fat (universal) libs
    mkdir -p ./compiled/fat/lib
    
    lipo -output ./compiled/fat/lib/libavcodec.a  -create \
    ./compiled/armv7s/lib/libavcodec.a \
    ./compiled/armv7/lib/libavcodec.a \
    ./compiled/i386/lib/libavcodec.a
    
    lipo -output ./compiled/fat/lib/libavdevice.a  -create \
    ./compiled/armv7s/lib/libavdevice.a \
    ./compiled/armv7/lib/libavdevice.a \
    ./compiled/i386/lib/libavdevice.a
    
    lipo -output ./compiled/fat/lib/libavfilter.a  -create \
    ./compiled/armv7s/lib/libavfilter.a \
    ./compiled/armv7/lib/libavfilter.a \
    ./compiled/i386/lib/libavfilter.a
    
    lipo -output ./compiled/fat/lib/libavformat.a  -create \
    ./compiled/armv7s/lib/libavformat.a \
    ./compiled/armv7/lib/libavformat.a \
    ./compiled/i386/lib/libavformat.a
    
    lipo -output ./compiled/fat/lib/libavutil.a  -create \
    ./compiled/armv7s/lib/libavutil.a \
    ./compiled/armv7/lib/libavutil.a \
    ./compiled/i386/lib/libavutil.a
    
    lipo -output ./compiled/fat/lib/libswresample.a  -create \
    ./compiled/armv7s/lib/libswresample.a \
    ./compiled/armv7/lib/libswresample.a \
    ./compiled/i386/lib/libswresample.a
    
    lipo -output ./compiled/fat/lib/libswscale.a  -create \
    ./compiled/armv7s/lib/libswscale.a \
    ./compiled/armv7/lib/libswscale.a \
    ./compiled/i386/lib/libswscale.a
    

    Original Post

    This will build ffmpeg static libraries for armv6, armv7, and i386 architectures and combine them into fat (universal) files for iOS 4.3 (iPhoneOS4.3 and iPhoneSimulator4.3):

    rm -r ./compiled
    
    # configure for armv7 build
    ./configure \
    --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
    --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
    --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk \
    --extra-ldflags=-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/system \
    --target-os=darwin \
    --arch=arm \
    --cpu=cortex-a8 \
    --extra-cflags='-arch armv7' \
    --extra-ldflags='-arch armv7' \
    --prefix=compiled/armv7 \
    --enable-pic \
    --enable-cross-compile \
    --disable-armv5te \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffserver \
    --disable-ffprobe \
    --disable-doc
    
    # build for armv7
    make clean
    make && make install
    
    # configure for armv6 build
    ./configure \
    --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
    --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
    --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk \
    --extra-ldflags=-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/system \
    --target-os=darwin \
    --arch=arm \
    --cpu=arm1176jzf-s \
    --extra-cflags='-arch armv6' \
    --extra-ldflags='-arch armv6' \
    --prefix=compiled/armv6 \
    --enable-cross-compile \
    --disable-armv5te \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffserver \
    --disable-ffprobe \
    --disable-doc
    
    # build for armv6
    make clean
    make && make install
    
    # configure for i386 build
    ./configure \
    --cc=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc \
    --as='gas-preprocessor.pl /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc' \
    --sysroot=/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk \
    --extra-ldflags=-L/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/system \
    --target-os=darwin \
    --arch=i386 \
    --cpu=i386 \
    --extra-cflags='-arch i386' \
    --extra-ldflags='-arch i386' \
    --prefix=compiled/i386 \
    --enable-cross-compile \
    --disable-armv5te \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffserver \
    --disable-ffprobe \
    --disable-doc
    
    # build for i386
    make clean
    make && make install
    
    # make fat (universal) libs
    mkdir -p ./compiled/fat/lib
    
    lipo -output ./compiled/fat/lib/libavcodec.a  -create \
    -arch armv6 ./compiled/armv6/lib/libavcodec.a \
    -arch armv7 ./compiled/armv7/lib/libavcodec.a \
    -arch i386 ./compiled/i386/lib/libavcodec.a
    
    lipo -output ./compiled/fat/lib/libavdevice.a  -create \
    -arch armv6 ./compiled/armv6/lib/libavdevice.a \
    -arch armv7 ./compiled/armv7/lib/libavdevice.a \
    -arch i386 ./compiled/i386/lib/libavdevice.a
    
    lipo -output ./compiled/fat/lib/libavfilter.a  -create \
    -arch armv6 ./compiled/armv6/lib/libavfilter.a \
    -arch armv7 ./compiled/armv7/lib/libavfilter.a \
    -arch i386 ./compiled/i386/lib/libavfilter.a
    
    lipo -output ./compiled/fat/lib/libavformat.a  -create \
    -arch armv6 ./compiled/armv6/lib/libavformat.a \
    -arch armv7 ./compiled/armv7/lib/libavformat.a \
    -arch i386 ./compiled/i386/lib/libavformat.a
    
    lipo -output ./compiled/fat/lib/libavutil.a  -create \
    -arch armv6 ./compiled/armv6/lib/libavutil.a \
    -arch armv7 ./compiled/armv7/lib/libavutil.a \
    -arch i386 ./compiled/i386/lib/libavutil.a
    
    lipo -output ./compiled/fat/lib/libpostproc.a  -create \
    -arch armv6 ./compiled/armv6/lib/libpostproc.a \
    -arch armv7 ./compiled/armv7/lib/libpostproc.a \
    -arch i386 ./compiled/i386/lib/libpostproc.a
    
    lipo -output ./compiled/fat/lib/libswscale.a  -create \
    -arch armv6 ./compiled/armv6/lib/libswscale.a \
    -arch armv7 ./compiled/armv7/lib/libswscale.a \
    -arch i386 ./compiled/i386/lib/libswscale.a
    
    0 讨论(0)
提交回复
热议问题