Mac OS上编译Mobile VLC for ios

这篇文章是对这两天工作的一个总结,在MacOS上编译target版本Mobile VLC for ios成功,其实这本来是个很简单的事情,不过中间还是出现了不少问题,由于自己本身从来没有接触过MacoS,更没有做过ios上的开发,所以还是折腾了几天,不过最后终归是折腾出来了,呵呵,只要功夫深,贴车磨成针,^_^,好了,不废话了。


开发平台:

MacOS X Lion 10.7.5, Xcode4.4 , SDK(IphoneOS.5.1)

一:

在开始编译工作之前需要保证自己有开发者权限和license,这一步很重要,我当时就是由于没有开发者权限导致编译出错,而这个错误没有接触过apple产品的童鞋很难解决。

二:

到该网站上http://www.videolan.org/vlc/download-ios.html下载 vlc for ios的三个源代码文件,并解压到某个工作目录,比如分别命名为MediaLibraryKit MobileVLC vlc

三:
替换vlc/extras/package/build_ios.sh位下面的脚本文件, 根据自己的平台做相应的修改,主要是修改两个地方
1. SDK 的路径 ,5.0之前的SDK是/Developer/......., 我们下载的代码中的就是针对5.0以前的SDK,而我们现在使用的SDK大多说都是5.1以后的,5.1以后的SDK的路径是
/Applications/Xcode.app/......,
2. SDK的版本 将其中的5.1换成自己使用的SDK的版本号

点击(此处)折叠或打开

  1. #!/bin/sh
  2. set -e

  3. echo "Building libvlc for the iOS"

  4. if [ "$1" = "Simulator" ]; then
  5.     PLATFORM="Simulator"
  6.     TARGET="i686-apple-darwin10"
  7.     ARCH="i386"
  8. else
  9.     PLATFORM="OS"
  10.     TARGET="arm-apple-darwin10"
  11.     ARCH="armv7"
  12.     OPTIM="-mno-thumb"
  13. fi

  14. THIS_SCRIPT_PATH=`pwd`/$0

  15. pushd `dirname $0`/../../..
  16. VLCROOT=`pwd` # Let's make sure VLCROOT is an absolute path
  17. popd
  18. DEVROOT="/Applications/Xcode.app/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer"
  19. IOS_SDK_ROOT="${DEVROOT}/SDKs/iPhone${PLATFORM}5.1.sdk"

  20. BUILDDIR=${VLCROOT}/build-ios-${PLATFORM}

  21. PREFIX=${VLCROOT}/install-ios-${PLATFORM}

  22. IOS_GAS_PREPROCESSOR="${VLCROOT}/extras/package/ios/resources/gas-preprocessor.pl"

  23. export AR="${DEVROOT}/usr/bin/ar"
  24. export RANLIB="${DEVROOT}/usr/bin/ranlib"
  25. export CFLAGS="-isysroot ${IOS_SDK_ROOT} -arch ${ARCH} -miphoneos-version-min=5.0 ${OPTIM}"
  26. export OBJCFLAGS="${CFLAGS}"
  27. if [ "$PLATFORM" = "Simulator" ]; then
  28.     # Use the new ABI on simulator, else we can't build
  29.     export OBJCFLAGS="-fobjc-abi-version=2 -fobjc-legacy-dispatch ${OBJCFLAGS}"
  30. fi
  31. export CPPFLAGS="${CFLAGS}"
  32. export CXXFLAGS="${CFLAGS}"
  33. export CPP="${DEVROOT}/usr/bin/llvm-cpp-4.2"
  34. export CXXCPP="${DEVROOT}/usr/bin/llvm-cpp-4.2"

  35. export CC="${DEVROOT}/usr/bin/llvm-gcc-4.2"
  36. export OBJC="${DEVROOT}/usr/bin/llvm-gcc-4.2"
  37. export CXX="${DEVROOT}/usr/bin/llvm-g++-4.2"
  38. export LD="${DEVROOT}/usr/bin/ld"
  39. export STRIP="${DEVROOT}/usr/bin/strip"

  40. if [ "$PLATFORM" = "OS" ]; then
  41.   export LDFLAGS="-L${IOS_SDK_ROOT}/usr/lib -L${IOS_SDK_ROOT}/usr/lib/system -arch ${ARCH}"
  42. else
  43.   export LDFLAGS="-syslibroot=${IOS_SDK_ROOT}/ -arch ${ARCH}"
  44. fi

  45. export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:${VLCROOT}/extras/contrib/build/bin:${VLCROOT}/extras/package/ios/resources"

  46. echo "Boostraping contribs"
  47. pushd ${ VLCROOT}/extras/contrib

  48. # contains gas-processor.pl
  49. export PATH=$PATH:${ VLCROOT}/extras/package/ios/resources

  50. # The contrib will read the following
  51. export IOS_SDK_ROOT

  52. echo "Building contrib for iOS"
  53. ./bootstrap ${ TARGET} ios
  54. make src

  55. echo "Building contrib for current host"
  56. ./bootstrap
  57. make

  58. popd

  59. if [ "$PLATFORM" = "OS" ]; then
  60.   export AS="${IOS_GAS_PREPROCESSOR} ${CC}"
  61.   export ASCPP="${IOS_GAS_PREPROCESSOR} ${CC}"
  62. else
  63.   export AS="${DEVROOT}/usr/bin/as"
  64.   export ASCPP="${DEVROOT}/usr/bin/as"
  65. fi


  66. echo "Bootstraping vlc"
  67. if ! [ -e ${ VLCROOT}/configure ]; then
  68.     ${ VLCROOT}/bootstrap
  69. fi

  70. if [ ".$PLATFORM" != ".Simulator" ]; then
  71.     # FIXME - Do we still need this?
  72.     export AVCODEC_CFLAGS="-I${PREFIX}include"
  73.     export AVCODEC_LIBS="-L${PREFIX}lib -lavcodec -lavutil -lz"
  74.     export AVFORMAT_CFLAGS="-I${PREFIX}include"
  75.     export AVFORMAT_LIBS="-L${PREFIX}lib -lavcodec -lz -lavutil -lavformat"
  76. fi

  77. mkdir -p ${ BUILDDIR}
  78. pushd ${ BUILDDIR}

  79. # Run configure only upon changes.
  80. if [ "${VLCROOT}/configure" -nt config.log -o
  81.      "${THIS_SCRIPT_PATH}" -nt config.log ]; then
  82. CONTRIB_DIR=${ VLCROOT}/extras/contrib/hosts/${ TARGET}/ios
  83. ${ VLCROOT}/configure
  84.     --prefix="$PREFIX"
  85.     --host="${TARGET}"
  86.     --enable-debug
  87.     --disable-shared
  88.     --enable-static
  89.     --disable-macosx
  90.     --disable-macosx-defaults
  91.     --disable-macosx-vout
  92.     --disable-macosx-dialog-provider
  93.     --disable-macosx-qtcapture
  94.     --disable-macosx-eyetv
  95.     --disable-macosx-vlc-app
  96.     --with-macosx-sdk=${ IO_SDK_ROOT}
  97.     --enable-audioqueue
  98.     --enable-ios-vout
  99.     --enable-avcodec
  100.     --enable-avformat
  101.     --enable-swscale
  102.     --enable-faad
  103.     --disable-mad
  104.     --disable-a52
  105.     --disable-fribidi
  106.     --disable-macosx-audio
  107.     --disable-qt4 --disable-skins2
  108.     --disable-libgcrypt
  109.     --disable-remoteosd
  110.     --disable-vcd
  111.     --disable-postproc
  112.     --disable-vlc
  113.     --disable-vlm
  114.     --disable-httpd
  115.     --disable-nls
  116.     --disable-glx
  117.     --disable-visual
  118.     --disable-lua
  119.     --disable-sse
  120.     --disable-neon
  121.     --disable-mmx # MMX and SSE support requires llvm which is broken on Simulator
  122. fi

  123. CORE_COUNT=`sysctl -n machdep.cpu.core_count`
  124. let MAKE_JOBS=$CORE_COUNT+1

  125. echo "Running make -j$MAKE_JOBS"

  126. make -j$MAKE_JOBS
  127. make install
  128. popd

三:

替换MobileVLC/buildMobileVLC.sh为下面的代码, 同样需要根据自己SDK的版本号加以修改。这个是编译执行的总脚本,这个脚本会调用刚才修改的vlc/extras/package/build_ios.sh,然后build_ios.sh会去调用vlc/extras/contrib/bootstrap脚本,这样最终实现整个工程的编译

点击(此处)折叠或打开

  1. #!/bin/bash


  2. rm -rf ./MediaLibraryKit/External/MobileVLCKit
  3. rm -rf ./MobileVLC/External/MobileVLCKit
  4. rm -rf ./MobileVLC/External/MediaLibraryKit

  5. if [ "$1" = "Simulator" ]; then
  6.     pushd vlc
  7.         echo "--==-- Build for vlc (simulator version) --==--"
  8.         pushd extras/package/ios
  9.             ./build_for_iOS.sh Simulator
  10.         popd

  11.         echo "--==-- Build for vlc-MobileVLCKit (simulator version) --==--"
  12.         pushd projects/macosx/framework
  13.             xcodebuild -project MobileVLCKit.xcodeproj -target "Aggregate static plugins" -configuration "Release" -sdk iphonesimulator5.1 SDKROOT=iphonesimulator5.1 VALID_ARCHS=i386 ARCHS=i386
  14.             xcodebuild -project MobileVLCKit.xcodeproj -target "MobileVLCKit" -configuration "Release" -sdk iphonesimulator5.1 SDKROOT=iphonesimulator5.1 VALID_ARCHS=i386 ARCHS=i386
  15.         popd
  16.     popd

  17.     echo "--==-- Build for MediaLibraryKit (simulator version) --==--"
  18.     pushd MediaLibraryKit
  19.         ln -s ../../vlc/projects/macosx/framework/build/Release-iphonesimulator External/MobileVLCKit
  20.         xcodebuild -project MobileMediaLibraryKit.xcodeproj -configuration "Release" -sdk iphonesimulator5.1 SDKROOT=iphonesimulator5.1 VALID_ARCHS=i386 ARCHS=i386
  21.     popd

  22.     echo "--==-- Build for MobileVLC (simulator version) --==--"
  23.     pushd MobileVLC
  24.         ln -s ../.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值