Ubuntu15.10 编译VLC Android(安卓)过程记录
持续更新中。。。
最后一次修改于 2016-03-20 15:33:45
1、必要库的安装
除基本编译环境(gcc、g++等外),需要额外安装如下的库(用于下载必要的依赖文件)
(1)JDK
推荐安装Oracle的JAVA SE,下载最新的版本即可,不推荐OpenJDK版本(容易出现一些包找不到的问题);
安装教程 例如 Ubuntu下安装JDK1.8;
安装之前检查是否有安装过其他jdk版本,执行 java -version看是否有输出版本信息。
如果已经安装过openJdk,执行如下指令卸载所有OpenJdk版本。
sudo apt-get remove openjdk*
下载之后设置环境变量,添加JDK相关的设置:
$ gedit ~/.bashrc
# 在该文件末尾加入以下内容(JAVA_HOME设置为JDK文件夹的路径)
export JAVA_HOME=/usr/local/jdk1..0_73
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:{JRE_HOME}/lib
export PATH=$PATH:${JAVA_HOME}/bin
# 完成后执行java -version测试是否得到版本号
$ java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environ,ent (build 1.8.0_73-b02)
Java HotSpot(TM) 64-bit Server VM (build 25.73-b02, mixed mode)
完成后执行java -version如果得到上述版本信息说明安装成功。
(2) 所依赖的必要库
均可以通过sudo apt-get install指令进行安装,例如
sudo apt-get install yasm
yasm (编译汇编必要)
curl (下载依赖的源码包必要)
autoreconf ()
automake ()
gcc-fortran (cmake新版本编译需要)
elf 库 (cmake编译需要,如果cmake版本达到3.4以上可不需要)
qmake (cmake编译需要)
patch (必要的工具,某些官方的代码需要打补丁才能在vlc中使用)
gettext (编译VLC必须,需要从 http://ftp.gnu.org/gnu/gettext/ 上下载最新的版本自行编译安装)
(3) 安卓开发必须安装的工具与包
NDK(最新的版本,需要包含将要编译的安卓版本的对应platform文件,采用C/C++开发必备)
SDK(最新的版本,也需要包含对应版本的platform文件)
Extra libs(SDK安装完毕后执行 android update sdk然后选择相应的包进行更新):
Local maven repository for Support Library
Android Support libs
Google Repository
2、下载VLC Android的git工程
下载地址: https://code.videolan.org/videolan/vlc-android.git
Windows下注意设置AutoCrLf和SafeCrLf,
建议的设置为
#提交时转换为LF,检出时不转换
git config --global core.autocrlf input
#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn
3、执行 ./compile.sh 命令等待编译过程完成
(1)无法下载gradle的错误
if [ ! -d "gradle/wrapper" ]; then
echo "Downloading gradle"
GRADLE_VERSION=2.6
GRADLE_URL=http://servie.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
wget ${GRADLE_URL} >/dev/null || curl -O ${GRADLE_URL}
需要修改一处地址,否则无法下载到正确的包:
GRADLE_URL=http://downloads.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
(2)nfs库编译错误(可能出现)
修改 contrib/contrib-android***/nfs/lib 目录下的 libnfs.c 和 libnfs-sync.c
出现错误的原因是代码中有这样两行可能导致错误:
#ifdef __ANDROID__
#define statvfs statfs
#endif
修改方式是 注释 #define statvfs statfs这行
#ifdef __ANDROID__
// #define statvfs statfs
#endif
(3)lua
configure: error: You need 32-bits luac when using using lua from contrib.
$ sudo apt-get install liblua5.2-0:i386 liblua5.2-0-dev:i386 $ file vlc/contrib/arm-linux-androideabi/bin/luac $ rm -f vlc/contrib/arm-linux-androideabi/bin/lua
$ rm -f vlc/contrib/arm-linux-androideabi/bin/luac $ ln -s /usr/bin/lua vlc/contrib/arm-linux-androideabi/bin/lua
$ ln -s /usr/bin/luac vlc/contrib/arm-linux-androideabi/bin/luac
(4)其他编译错误
一般是下载某些库出错,保持网络畅通,重复执行
./compile.sh
即可。
4、修改了某些依赖库后的重新编译
一些库是允许修改的:
例如vlc的contrib目录下的ffmpeg库,并不会校验压缩包的MD5信息,
可以偷偷替换 ./vlc/contrib/tarballs 文件夹下对应的压缩包,并使用touch指令更新该压缩包的修改时间。
然后重新执行 ./compile.sh 即可(会检测到该类包的修改然后重新解压缩并且编译)。
另外一些库是带有MD5值校验的:
例如 nfs 库,
直接修改它的相应源码应该是可行的。
附:国内的安卓、Ubuntu镜像地址:
可选的一些地址: http://blog.csdn.net/slow_liao/article/details/44358971
Android镜像配置步骤
- 启动 Android SDK Manager ,打开主界面,依次选择「Tools」、「Options...」,弹出『Android SDK Manager - Settings』窗口;
- 在『Android SDK Manager - Settings』窗口中,在「HTTP Proxy Server」和「HTTP Proxy Port」输入框内填入
mirrors.neusoft.edu.cn
和80
,并且选中「Force https://... sources to be fetched using http://...」复选框。设置完成后单击「Close」按钮关闭『Android SDK Manager - Settings』窗口返回到主界面; - 依次选择「Packages」、「Reload」。
- 由于某些网络接入商进行了劫持,会弹出用户认证界面无法使用,和本镜像服务器配置无关。
附:linux指令
ulimit:
http://my.oschina.net/u/219482/blog/313598
virtualBox 虚拟机中共享文件夹的设置
http://www.cnblogs.com/linjiqin/p/3615477.html
tar文件压缩指令
http://blog.csdn.net/dapao123456789/article/details/12889565
Ubuntu15.10 编译VLC Android(安卓)过程记录的更多相关文章
- Ubuntu18.10下安装Qt5.12过程记录
首先你得先安装Ubuntu操作系统(我是在VMWare14中安装的Ubuntu18.10版本). 阿里镜像:https://opsx.alibaba.com/mirror 我这里下载的文件为:ubun ...
- 【转】vlc android 代码编译
转自:http://blog.csdn.net/asircao/article/details/7734201 系统:ubuntu12.04代码:git://git.videolan.org/vlc- ...
- 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...
- android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...
- ubuntu15.10下编译安装wine1.8 rc4
ubuntu15.10下编译安装wine1.8rc4 Wine (“Wine Is Not an Emulator” 的递归缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Li ...
- openWRT自学---自己编译的第一个 backfire10.03 版本的过程记录(转)
基于 backfire10.03(从http://downloads.openwrt.org/backfire/10.03/ 中下砸的源码包backfire_10.03_source.tar.bz2: ...
- openWRT自学---自己编译的第一个 backfire10.03 版本的过程记录 --- 实际是由于下载了错误的backfire源码包导致的
基于 backfire10.03(从http://downloads.openwrt.org/backfire/10.03/ 中下砸的源码包backfire_10.03_source.tar.bz2: ...
- Linux下编译VLC for Android源代码总结
转:http://blog.chinaunix.net/uid-26611383-id-3678766.html 由于项目需要,需要一个在android平台能够支持RTSP协议的播放器,由于之前没有a ...
- 升级Windows 10 正式版过程记录与经验
升级Windows 10 正式版过程记录与经验 [多图预警]共50张,约4.6MB 系统概要: 预装Windows 8.1中文版 64位 C盘Users 文件夹已经挪动到D盘,并在原处建立了符号链接. ...
随机推荐
- WINFORM跟随WPF窗体移动
<Window x:Name="mainWindow1" x:Class="WpfApplication9.MainWindow" xml ...
- Apache的prefork模式和worker模式(转)
prefork模式这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请求 ...
- 【iOS程序启动与运转】- RunLoop个人小结
学习iOS开发一般都是从UI开始的,从只知道从IB拖控件,到知道怎么在方法里写代码,然后会显示什么样的视图,产生什么样的事件,等等.其实程序从启动开始,一直都是按照苹果封装好的代码运行着,暴露的一些属 ...
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...
- linux安装java环境
在linux下安装JDK如下: 第一步:查看Linux自带的JDK是否已安装 (1)查看已经安装的jdk: [root@web-server ~]# rpm -qa|grep jdk ← 查看jdk的 ...
- String类概述
(1)多个字符组成的一串数据. 其实它可以和字符数组进行相互转换. (2)构造方法: A:public String() B:public String ...
- JDK+Tomcat+MyEclipse发布JSP项目——不能成功的问题
JDK.Tomcat和MyEclipse安装完成后,在将web Project发布到Tomcat时出现金叹号,如图 原因:由于将Tomcat安装在C盘,所以需要启用管理员权限. 解决途径:用管理员身份 ...
- Ext.Net学习笔记08:Ext.Net中使用数据
之前的七篇文章都是介绍Ext.Net较为基础的东西,今天的这一篇将介绍数据的一些用法,包括XTemplate绑定数据.Store(Modal.Proxy).ComboBox的用法等. XTemplat ...
- 关于block块使用的6点注意事项
对于刚学习OC新伙伴,block块一直都是一个比较纠结.比较难懂的知识点,不过,在使用一段时间后,就会感觉很酸爽.block块的原理及使用我就不再赘述,网上有很多这方面的资料.我个人使用这么长时间以来 ...
- 节点插入--对比jQuery和JavaScript方法(一)
二.插入元素: 1 <div> 2 <p>面朝大海,春暖花开</p> 3 </div> (一).jQuery方法 1.在节点内部插入: 方法 说明 ap ...