文档章节

虚拟机安装OSX10.11.4+编译libVLC和VLC源码

yagerfgcs
 yagerfgcs
发布于 2016/06/26 17:49
字数 2148
阅读 96
收藏 0

一、安装虚拟机

虚拟机使用的是VMware® Workstation 12 Pro  12.1.0 build-3272444

参考:http://jingyan.baidu.com/article/3f16e003eac66e2591c103e0.html

虚拟机设置

内存 4G

处理器数量2每个处理器核心数量2,虚拟化引擎中勾上“虚拟化Intel VT-x 或AMD-V/RVI(V)”和“虚拟化CPU性能计数器”

硬盘60G,原先分配40G,在升级系统和XCode版本后占用较大空间,建议60G

CD/DVD(SATA):手动选择“使用ISO映像文件”,浏览打开iso文件

网络适配器:选择桥接模式,这样可自动分配局域网IP

显示器:选择“加速3D图形”,图形内存768MB

遇到的问题:

1、报错:

解决办法:用记事本打开对应的虚拟机配置文件vmx,添加一句smc.version = "0"

2、安装VMWare Tools:需要在osx系统里“推出光盘”,然后在虚拟机VMWare Tools的设置里,重新加载iso(也可能osx自动弹出界面安装)

http://blog.itpub.net/25990299/viewspace-1245320/

二、安装osx苹果Mac系统

1、安装后基本不能使用,性能太差,去掉不必要的设置,可以提升性能,

1)参考:http://www.3lian.com/edu/2015/05-05/209925.html

2)请装beamoff!详见:https://github.com/JasF/beamoff.git

CSDN下载:http://download.csdn.net/download/bytige/8371825

 本站下载:http://files.cnblogs.com/files/yipu/beamoff.zip

使用方法:系统偏好设置 - 用户与群组 - 选中你自己的用户名 - 选择 “登录项” 选项卡 - 点 + 号

找到你下载的beamoff.app

2、对于不习惯OSX中的Command键操作的地方更换为Windows熟悉的Control键方法:

系统偏好设置->键盘->修饰键:将Control和Command键互换


三、准备编译环境

相关参考链接

a、libVLC和VLC源码的区别

http://blog.csdn.net/buyicn/article/details/22756141

b、libVLC即VLCKit和VLC编译方式

libVLC参考:https://wiki.videolan.org/VLCKit/

VLC参考:https://wiki.videolan.org/IOSCompile/

四、遇到的问题

1、编译libVLC时报错(SDK找不到、CoreText等系统库找不到、其它configure、build阶段的错误)

<strong>a、SDK找不到</strong>
sh-3.2# sh ./buildMobileVLCKit.sh 
xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: unable to lookup item 'SDKVersion' in SDK 'iphoneos'

<strong>b、CoreText系统库找不到等等</strong>
configure: error: CoreText support requested but libcoretext not found

原因是:xcode版本不对,编译环境设置不对、翻墙代理不给力等等。

1、系统和XCode版本升级到最新。虚拟机中OSX系统版本是10.10,之后自动更新到osx10.10.5,但是下载的xcode是最新的xcode beta版本,因为系统无法自动升级到osx10.11,所以无法使用最新的xcode。在这种环境上编译多次,并且手动修改buildMobileKit.sh和extras\packages\ios\build.sh文件,同样出现问题。所以改变思路,将操作系统升级到最新的osx10.11.4,并将xcode升级到Version 7.3 (7D175)。


备忘:附旧版本下载办法:到官网https://developer.apple.com/downloads/上下载与osx10.10匹配的xcode版本v6.4

2、无需手动修改环境变量。

       有的同仁的经验文档中写道,需要修改环境变量,将MobileVLCKit\ImportedSources\vlc\extras\tools\build\bin目录增加到$PATH中,其实不需要。至少现在的新版本中编译脚本不需要了。在MobileVLCKit\ImportedSources\vlc\extras\package\ios\build.sh中已经将该路径增加到环境变量中了。

       另外:像MobileVLCKit\ImportedSources\vlc\extras\tools中的ant、autoconf、automake、gas、libtool、m4、pkgconfig等工具以及MobileVLCKit\ImportedSources\vlc\contrib\tarballs下载的库不要手动安装,由脚本自动安装到指定目录。比如extras下的tools均安装到tools\build目录下了,在编译vlc时,会引用该目录下的所有工具。

如果无法下载,可以到我的下载中心下载:

tarballs库:http://download.csdn.net/detail/yagerfgcs/9521269

extras\tools库:http://download.csdn.net/detail/yagerfgcs/9521425

3、推荐旗鱼vpn代理。使用给osx设置vpn代理,直接翻墙下载对应文件,如果下载不了,更换另一个vpn地址再尝试。最好使用美国的代理,我编译过程中遇到使用香港、台湾代理无法下载的情况,更换为美国的就可以了。尽量不要手动通过浏览器下载,不然会出现SHA512SUMS校验码问题,参考http://www.cnblogs.com/zjjcy/p/3858759.html

附上OSX下如何使用旗鱼vpn的链接:http://www.nb195.com/vpnjc/13.html

4、找不到install-ios-iPhoneOS目录

./buildMobileVLCKit.sh: line 44: pushd: MobileVLCKit/ImportedSources/vlc/install-ios-iPhoneOS: No such file or directory
原因:在MobileVLCKit\ImportedSources\vlc\extras\package\ios\build.sh脚本中会configure、make vlc的源码,在此过程中会在vlc根目录下创建install-ios-iPhoneOS和install-ios-iPhoneSimlator。然后在MobileVLCKit\buildMobilekit.sh脚本中会打开该目录。所以找不到该目录的原因有两种:1、使用sh ./buildMobileKit.sh -f命令同时编译Device、Simulator、static framework。不能仅编译模拟器的版本,否则install-ios-iPhoneOS目录没创建。 2、执行build.sh过程失败了,更换个美国的vpn再试试,参考上一条vpn代理。

5、build.sh中make失败,报libaccess_archive_plugin.la错误。

+ make -j3
grep: /Users/yager/vlc_ios/vlc/MobileVLCKit/ImportedSources/vlc/extras/tools/build/lib/liblzma.la: No such file or directory
sed: /Users/yager/vlc_ios/vlc/MobileVLCKit/ImportedSources/vlc/extras/tools/build/lib/liblzma.la: No such file or directory
libtool: link: `/Users/yager/vlc_ios/vlc/MobileVLCKit/ImportedSources/vlc/extras/tools/build/lib/liblzma.la' is not a valid libtool archive
make[4]: *** [libaccess_archive_plugin.la] Error 1
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1

五、libVLC编译脚本解析

1、脚本的调用顺序

a、sh -x ./buildMobileVLCKit.sh -f -->解析命令参数->git下载vlc源码->调用buildMobileKit函数编译MobileKit->根据参数判断编译模拟器版本、真机版本,调用vlc/extras/package/ios目录下的build.sh脚本(build.sh脚本单独详述)->调用build_universal_static_lib函数编译静态库->(展开静态库调用方式:清理头文件,创建install-ios-$OSSTYLE文件夹,为后续拷贝做准备->遍历真机和模拟器编译中生成的install-ios-"$OSSTYLE"OS和install-ios-"$OSSTYLE"Simulator目录,准备拷贝所有的.a文件到刚才创建的install-ios-"$OSSTYLE"文件夹中。)->如果需要编译静态framework,则执行buildxcodeproj命令将对应文件打包到framework中。

b、build.sh的执行过程:解析命令参数->Building libvlc for Apple embedded OS style ->配置SDK版本路径->配置BUILDDIR路径为"${VLCROOT}/build-ios-${OSSTYLE}${PLATFORM}/${ACTUAL_ARCH}"->添加环境变量${VLCROOT}/extras/tools/build/bin:${VLCROOT}/contrib/${TARGET}/bin,这样就屏蔽了自带的环境变量中自带的autoconfig等工具对本次编译的影响。->Building tools。打开extras/tools工具,make编译所有额外工具->Building contrib for iOS->打开"${VLCROOT}/contrib/${OSSTYLE}${PLATFORM}-${ARCH}"目录执行../bootstrap命令->make -j3->Bootstraping vlc->配置vlc->Building libvlc:make libVLC->Installing libvlc

2、参考我的下载链接中libVLC编译成功的shell脚本执行过程,作为参考项,可以对比编译中出现的错误

下载链接:http://download.csdn.net/detail/yagerfgcs/9510588

200-100-1-190:~ yager$ su root
Password:
sh-3.2# cd VLCKit/
sh-3.2# ls
.DS_Store			MobileVLCKit.podspec
.git				MobileVLCKit.xcodeproj
.gitignore			MobileVLCKit_Prefix.pch
CONTRIBUTING.md			NEWS
COPYING				Packaging
Configure.sh			Pre-Compile.sh
DynamicMobileVLCKit		README.md
DynamicTVVLCKit			Resources
Examples_OSX			Sources
Examples_iOS			StaticLibVLC
Headers				TVVLCKit
Makefile			VLCKit-Info.plist
MobileVLCKit			VLCKit.xcodeproj
MobileVLCKit-dynamic		VLC_Prefix.pch
MobileVLCKit-prod.podspec	buildMobileVLCKit.sh
MobileVLCKit-unstable.podspec
sh-3.2# sh -x ./buildMobileVLCKit.sh -f
+ set -e
+ BUILD_DEVICE=yes
+ BUILD_SIMULATOR=yes
+ BUILD_STATIC_FRAMEWORK=no
++ xcrun --sdk iphoneos --show-sdk-version
+ SDK=9.3
+ SDK_MIN=7.0
+ VERBOSE=no
+ CONFIGURATION=Release
+ NONETWORK=no
+ SKIPLIBVLCCOMPILATION=no
+ SCARY=yes
+ TVOS=no
+ BITCODE=no
+ TESTEDHASH=ac4658d2
+ getopts hvwsfbdntlk: OPTION
+ case $OPTION in
+ BUILD_DEVICE=yes
+ BUILD_SIMULATOR=yes
+ BUILD_STATIC_FRAMEWORK=yes
+ getopts hvwsfbdntlk: OPTION
+ shift 1
+ out=/dev/null
+ '[' no = yes ']'
+ '[' x '!=' x ']'
+ spushd .
+ pushd .
++ pwd
+ aspen_root_dir=/Users/yager/VLCKit

......................................................省略.........................................................................

$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-iPhone/plugins/libaccess_concat_plugin.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-iPhone/plugins/libaccess_archive_plugin.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-iPhone/plugins/liba52tospdif_plugin.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-iPhone/plugins/liba52_plugin.a '
+ spopd
+ popd
+ info 'all done'
+ local 'green=\033[1;32m'
+ local 'normal=\033[0m'
+ echo '[\033[1;32minfo\033[0m] all done'
[info] all done
+ '[' yes '!=' no ']'
+ info 'Building static MobileVLCKit.framework'
+ local 'green=\033[1;32m'
+ local 'normal=\033[0m'
+ echo '[\033[1;32minfo\033[0m] Building static MobileVLCKit.framework'
[info] Building static MobileVLCKit.framework
+ buildxcodeproj MobileVLCKit MobileVLCKit iphoneos
+ local target=MobileVLCKit
+ local PLATFORM=iphoneos
+ info 'Building MobileVLCKit (MobileVLCKit, Release, iphoneos)'
+ local 'green=\033[1;32m'
+ local 'normal=\033[0m'
+ echo '[\033[1;32minfo\033[0m] Building MobileVLCKit (MobileVLCKit, Release, iphoneos)'
[info] Building MobileVLCKit (MobileVLCKit, Release, iphoneos)
+ local architectures=
+ '[' iphoneos = iphonesimulator ']'
+ architectures='armv7 armv7s arm64'
+ local defs=
+ '[' yes = no ']'
+ xcodebuild -project MobileVLCKit.xcodeproj -target MobileVLCKit -sdk iphoneos9.3 -configuration Release 'ARCHS=armv7 armv7s arm64' IPHONEOS_DEPLOYMENT_TARGET=7.0 GCC_PREPROCESSOR_DEFINITIONS=
2016-05-05 10:17:47.545 xcodebuild[34742:870095] Failed to locate a valid instance of CoreSimulatorService in the bootstrap.  Adding it now.
+ buildxcodeproj MobileVLCKit MobileVLCKit iphonesimulator
+ local target=MobileVLCKit
+ local PLATFORM=iphonesimulator
+ info 'Building MobileVLCKit (MobileVLCKit, Release, iphonesimulator)'
+ local 'green=\033[1;32m'
+ local 'normal=\033[0m'
+ echo '[\033[1;32minfo\033[0m] Building MobileVLCKit (MobileVLCKit, Release, iphonesimulator)'
[info] Building MobileVLCKit (MobileVLCKit, Release, iphonesimulator)
+ local architectures=
+ '[' iphonesimulator = iphonesimulator ']'
+ architectures='i386 x86_64'
+ local defs=
+ '[' yes = no ']'
+ xcodebuild -project MobileVLCKit.xcodeproj -target MobileVLCKit -sdk iphonesimulator9.3 -configuration Release 'ARCHS=i386 x86_64' IPHONEOS_DEPLOYMENT_TARGET=7.0 GCC_PREPROCESSOR_DEFINITIONS=
+ spushd build
+ pushd build
+ rm -rf MobileVLCKit.framework
+ mkdir MobileVLCKit.framework
+ lipo -create Release-iphoneos/libMobileVLCKit.a Release-iphonesimulator/libMobileVLCKit.a -o MobileVLCKit.framework/MobileVLCKit
+ chmod a+x MobileVLCKit.framework/MobileVLCKit
+ cp -pr Release-iphoneos/MobileVLCKit MobileVLCKit.framework/Headers
+ spopd
+ popd
+ info 'Build of static MobileVLCKit.framework completed'
+ local 'green=\033[1;32m'
+ local 'normal=\033[0m'
+ echo '[\033[1;32minfo\033[0m] Build of static MobileVLCKit.framework completed'
[info] Build of static MobileVLCKit.framework completed

六、libVLC需翻墙下载的主要是tarballs和tools目录下的软件。可以访问我的下载链接,直接获取



© 著作权归作者所有

yagerfgcs
粉丝 5
博文 34
码字总数 13476
作品 0
南京
技术主管
私信 提问
加载中

评论(2)

yagerfgcs
yagerfgcs

引用来自“小码爱大牛”的评论

你好,我是深圳一家以家居智能安防为核心的智能家居公司的HR,我们正在招聘一位熟悉ffmpeg或vlc的高级iOS开工程师。不知道您或者您身边的同事和朋友有没有在看工作机会的?如果感兴趣可以发简历到3288771685@qq.com或者加起QQ。
谢谢,不考虑深圳
小码爱大牛
小码爱大牛
你好,我是深圳一家以家居智能安防为核心的智能家居公司的HR,我们正在招聘一位熟悉ffmpeg或vlc的高级iOS开工程师。不知道您或者您身边的同事和朋友有没有在看工作机会的?如果感兴趣可以发简历到3288771685@qq.com或者加起QQ。
CentOS 6.2 下编译使用Libvlc

总的来说把VLC内嵌入自己的应用有4种途径: •直接调用VLC进程 •VLC的plugin for Mozilla •VLC的ActiveX插件 •调用libvlc 最近需要VLC动态库做开发,故需要编译vlc,并修改VLC 将自己的A...

lichao19881026
2014/05/16
0
0
编写Shell/Bat脚本,编译VLC和FFmpeg

编译生成ffmpeg和项目包含的静、动态库 参考 http://trac.ffmpeg.org/wiki/CompilationGuide/MSVC http://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX http://trac.ffmpeg.org/wiki/Comp......

天台道人
2016/09/12
3
0
编写shell和bat脚本,一键编译ffmpeg和vlc

编译生成ffmpeg和项目包含的静、动态库 参考 http://trac.ffmpeg.org/wiki/CompilationGuide/MSVC http://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX http://trac.ffmpeg.org/wiki/Comp......

天台道人
2016/09/11
13
8
基于VLC的一个播放器

VLC属于Video LAN开源项目组织中的一款全开源的流媒体服务器和多媒体播放器。作为流媒体服务器,VLC跨平台,支持多操作系统和计算机体系结构;作为多媒体播放器,VLC可以播放多种格式的媒体文...

种地瓜
2016/07/04
62
0
vlc android 怎样编译出同时支持多个架构的 libvlc aar 包?

我从 vlc android 源码分别编译出了 amrv7 和 armv8 架构的 libvlc aar 包 libvlc-armv7.aar、libvlc-armv8.aar,我没找到同时编译出支持这两种架构的方法,有朋友知道请告知。...

mymbrooks
2015/12/20
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Why hash maps in Java 8 use binary tree instead of linked list?

Q: I recently came to know that in Java 8 hash maps uses binary tree instead of linked list and hash code is used as the branching factor.I understand that in case of high colli......

群星纪元
11分钟前
0
0
HanLP 自然语言处理 for nodejs

·支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,...

左手的倒影
12分钟前
0
0
SpringBoot基础知识

1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。 ...

boonya
26分钟前
0
0
Fundebug微信小程序错误监控插件更新至1.1.0,新增test()与notifyHttpError()方法

摘要: 1.1.0新增fundebug.test()和fundebug.notifyHttpError()方法,同时大小压缩至15K。 Fundebug是专业的小程序BUG监控服务,可以第一时间为您捕获生存环境中小程序的异常、错误或者BUG,...

Fundebug
27分钟前
0
0
Linux运维常见的硬件及系统问题

一、服务器常见故障和现象 1、有关服务器无法启动的主要原因 : ①市电或电源线故障(断电或接触不良) ②电源或电源模组故障 ③内存故障(一般伴有报警声) ④CPU故障(一般也会有报警声) ⑤主板故...

寰宇01
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部