2015-03-03 64 views
1

當我編譯librtmp爲IOS,腳本下面示出:鐺錯誤版本號無效-miphoneos版本分鐘= .sd

#!/bin/sh 

# OS X Yosemite, Xcode 6.1 

set -ex 

DEVELOPER="/Applications/Xcode.app/Contents/Developer" 
DEVICE_SDK="$DEVELOPER/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk" 
SIMULATOR_SDK="$DEVELOPER/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk" 
CURRPATH=`pwd` 
SOURCE="rtmpdump" 
DSTDIR="librtmp" 
LIBSSL=`cd ../OpenSSL/libssl;pwd` 
ARCHS="i386 x86_64 armv7 armv7s arm64" 

rm -rf $DSTDIR 
mkdir $DSTDIR 

if [ ! -d $SOURCE ]; then 
    git clone git://git.ffmpeg.org/rtmpdump $SOURCE 
else 
    cd $SOURCE 
    git fetch 
    cd .. 
fi 

cd $SOURCE/librtmp 

for ARCH in $ARCHS; do 
    mkdir -p ../$DSTDIR/$ARCH 

    if [[ $ARCH == arm* ]]; then 
     SDK=$DEVICE_SDK 
    else 
     SDK=$SIMULATOR_SDK 
    fi 

    perl -i -pe 's|^AR=\$\(CROSS_COMPILE\)ar|AR=xcrun ar|' Makefile 

    CROSS_COMPILE="$DEVELOPER/usr/bin/" \ 
    XCFLAGS="-O0 -isysroot $SDK -I$LIBSSL/include -arch $ARCH " \ 
    XLDFLAGS="-isysroot $SDK -L$LIBSSL/lib -arch $ARCH -miphoneos-version-min=7.0 " \ 
    make SYS=darwin 
    make SYS=darwin prefix="$CURRPATH/$DSTDIR/$ARCH" install 
    make clean 
done 


mkdir -p $CURRPATH/$DSTDIR/lib 
cd $CURRPATH/$DSTDIR/$ARCH/lib 
LIBS=`ls *.a` 
cd $CURRPATH 
for LIB in $LIBS; do 
    lipo -create `find $DSTDIR -name $LIB` -output $DSTDIR/lib/$LIB 
done 

cp -rf $DSTDIR/$ARCH/include $DSTDIR 

for ARCH in $ARCHS; do 
    rm -rf $DSTDIR/$ARCH 
done 

當語句make SYS=darwin運行時,錯誤顯示:

/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -Wall -O0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -I/Users/Smeegol/Desktop/AVCodecs2/OpenSSL/libssl/include -arch armv7 -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL -O2 -fPIC -c -o rtmp.o rtmp.c 
clang: error: invalid version number in '-miphoneos-version-min=.sd' 
make: *** [rtmp.o] Error 1 

爲什麼?我已經設置了XLDFLAGS="-isysroot $SDK -L$LIBSSL/lib -arch $ARCH -miphoneos-version-min=7.0 "和爲什麼invalid version number in '-miphoneos-version-min=.sd'發生?

回答

3

我有同樣的問題,並通過改變-isysroot爭論解決它:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk

到:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk

請注意,後者是我的系統上的前者的符號鏈接。

看起來,鏗鏘是從iPhoneOSXXX.sdk目錄名稱隱含設置-miphoneos-version-min=。使用其中的版本號鏈接似乎解決了編譯問題。