在將FFmpeg編譯成IOS版的時候,接觸到編譯腳本的一段(刪減了部分):
1 for ARCH in $ARCHS 2 do 3 if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ] 4 then 5 PLATFORM="iPhoneSimulator" 6 else 7 PLATFORM="iPhoneOS" 8 fi 9 10 XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'` 11 CC="xcrun -sdk $XCRUN_SDK clang" 12 CXXFLAGS="$CFLAGS" 13 LDFLAGS="$CFLAGS" 14 15 TMPDIR=${TMPDIR/%\/} $CWD/$SOURCE/configure \ 16 --target-os=darwin \ 17 --arch=$ARCH \ 18 --cc="$CC" \ 19 $CONFIGURE_FLAGS \ 20 --extra-cflags="$CFLAGS" \ 21 --extra-ldflags="$LDFLAGS" \ 22 --prefix="$THIN/$ARCH" \ 23 || exit 1 24 25 make -j3 install $EXPORT || exit 1 26 cd $CWD 27 done
腳本中有一句"xcrun -sdk $XCRUN_SDK clang", 是編譯的重點, 其中-sdk 后面接的就是要編譯的平台. 一開始沒怎么注意, 后來想要編譯i386的OSX庫, 由於我的OSX是x64的, 常規方法好像只能編譯出x64的FFmpeg庫, 試了好久, 最終決定嘗試使用和編譯IOS庫類似的方法. 但問題來了, 這個XCRUN_SDK選什么呢?
觀察IOS版的腳本發現,xcrun的-sdk后面接的sdk_name和xcodebuild的-sdk是一樣的. 試了一下, 果然如此, 似乎又學習到了一點東西!
xcodebuild支持的sdk可使用"xcodebuild -showsdks"命令查看, 選擇時, 忽略后面的版本號就好. 例如 iphoneos9.3, 則選擇 iphoneos