gcc clang错误-miphoneos-version-min=.sd中的版本号无效

t8e9dugd  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(134)

当我为ios编译librtmp时,脚本显示如下:

#!/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'

mrzz3bfm

mrzz3bfm1#

我也遇到了同样的问题,并通过将-isysroot参数从:
/应用/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
致:
/应用/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk
请注意,后者是我的系统上前者的符号链接。
看起来clang正在从iPhoneOSXXX.sdk目录名隐式设置-miphoneos-version-min=。使用带有版本号的链接似乎修复了编译问题。

dfuffjeb

dfuffjeb2#

该错误有点令人困惑,可能有多种原因:

  • 并非所有SDK都支持所有可能的-miphoneos-version-min=值。
  • 或者像OP一样,-miphoneos-version-min=甚至没有传递给编译器。

相关问题