xcrun -sdk 选择
在将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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步