ubuntu 12.04编译vlc详细过程

本文介绍ubuntu下android-vlc编译的过程,主要记录了编译过程中碰的到问题及解决方案,如果可以为其他人编译vlc提供帮助,将是我的荣幸。



一 编译环境搭建:

1.下载配置NDK环境:

使用版本android-ndk-r9

下载地址:http://www.126disk.com/fileview_1441036.html


2.下载配置SDK环境:

使用版本:adt-bundle-linux-x86-20140702.zip

将压缩包解压到/opt目录下就可以。


3.安装JDK环境

使用版本:jdk1.7.0_71

安装至/opt目录下


4.设置NDK,SDK,JDK环境变量

编辑环境变量设置脚本:vim env.sh

#!/bin/sh

export JAVA_HOME=/opt/jdk1.7.0_71
export JRE_HOME=/opt/jdk1.7.0_71/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$ANT_HOME

export NO_NEON=1
export ANDROID_SDK=/opt/adt-bundle-linux-x86-20140702/sdk
export ANDROID_NDK=/opt/android-ndk-r9
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
export ANDROID_ABI=armeabi-v7a

编辑完成后,设置变量:source env.sh


二 编译前需要下载安装的工具:

0.安装编译vlc依赖的其他库:

$ sudo apt-get build-dep vlc  

1.下载安装 git 工具:

# apt-get install git

2.下载安装 ant工具:

# apt-get install ant

注:此处下载安装ant 会一并下载安装 openJDK,但不影响编译。

3.下载安装一下工具:

# apt-get install wget

# apt-get install autoconf

# apt-get install libtool

# apt-get install subversion

# apt-get install xfig

# apt-get install texinfo

有些版本可能需要安装automake-1.13,aclocal-1.13版本,直接将automake-1.13链接到automake也可以

ln -s automake automake-1.13



三 编译vlc-android 

1. 新建一个编译目录

mkdir ~/vlc-android

cd ~/vlc-android

2. 下载源代码

git clone git://git.videolan.org/vlc-ports/android.git

3.开始编译

sh compile.sh

下面开始比较长时间的编译,因为需要下载和安装vlc源码和第三方的软件,比如音视频解码ffmpeg等

4.可能出现的编译错误

下载第三方软件可能出现超时等下载失败,这时会中断编译,最好是失败后,将失败时显示的下载地址输入浏览器,用浏览器下载后,拷贝到目录~/vlc-android/android/vlc/contrib/tarballs

LibVNCServer-0.9.9.tar.gz  libdvbpsi-1.2.0.tar.bz2    libmodplug-0.8.8.5.tar.gz  nettle-2.7.1.tar.gz
a52dec-0.7.4.tar.gz        libdvdcss-1.3.0.tar.bz2    libmpeg2-0.5.1.tar.gz      openjpeg-1.5.0.tar.gz
ffmpeg-HEAD.tar.gz         libdvdnav-5.0.1.tar.bz2    libogg-1.3.2.tar.xz        opus-1.1.tar.gz
flac-1.3.0.tar.xz          libdvdread-5.0.0.tar.bz2   libpng-1.6.12.tar.xz       postproc-git.tar.gz
freetype-2.5.3.tar.gz      libebml-1.3.0.tar.bz2      libssh2-1.4.3.tar.gz       protobuf-2.5.0.tar.bz2
fribidi-0.19.6.tar.bz2     libgcrypt-1.6.2.tar.bz2    libtheora-1.1.1.tar.xz     protobuf-2.6.0.tar.bz2
gettext-0.19.2.tar.gz      libgpg-error-1.15.tar.bz2  libtool-2.4.2.tar.gz       ragel-6.8.tar.gz
gmp-6.0.0.tar.bz2          libgsm_1.0.13.tar.gz       libvorbis-1.3.4.tar.xz     speex-git.tar.gz
gnutls-3.2.17.tar.xz       libiconv-1.14.tar.gz       libxml2-2.9.1.tar.gz       speexdsp-git.tar.gz
jpegsrc.v9a.tar.gz         libmad-0.15.1b.tar.gz      live.2014.07.25.tar.gz     taglib-1.9.1.tar.gz
libass-0.11.2.tar.gz       libmatroska-1.4.1.tar.bz2  mpg123-1.21.0.tar.bz2      zlib-1.2.8.tar.gz


5.编译完成

看到如下信息就表示编译完成了

debug:
BUILD SUCCESSFUL
Total time: 1 minute 3 seconds


我是使用的VLC代码工程: 

链接:http://pan.baidu.com/s/1mgolVCW 密码:2bk3


附录:

编译过程中可能还会遇到的问题

1) libtool错误

因为vlc编译的许多工具都是自行下载后编译,因此出现libtool提示错误,可能是由于没有安装libtool,注意这不是说系统没有安装,而是下载后安装的libtool没有将库文件拷贝安装到vlc指定的目录,导致编译时没有找到相关的环境。出现此类错误,需要下载

libtool压缩包,版本号从~/vlc-android/vlc/extras/tools/packages.mak中查找,用浏览器下载到此目录,然后解压缩后编译

cd libtool-2.4.2

./bootstrap

./configure

make & make install

这样编译后只是安装到了系统的目录下,并没有安装到vlc指定目录下,因此需要将安装在系统目录下的文件拷贝到~/vlc-android/vlc/extras/tools/build/目录下

如下:

david@ubuntu:~/vlc-android/vlc/extras/tools/build$ tree -d
.
|-- bin
|-- doc
|   `-- cmake-2.8
|       |-- cmcompress
|       |-- cmcurl
|       |-- cmexpat
|       |-- cmlibarchive
|       |-- cmsys
|       `-- cmzlib
|-- include
|   |-- google
|   |   `-- protobuf
|   |       |-- compiler
|   |       |   |-- cpp
|   |       |   |-- java
|   |       |   `-- python
|   |       |-- io
|   |       `-- stubs
|   `-- libyasm
|-- lib
|   `-- pkgconfig
|-- man
|   `-- man1
`-- share
    |-- aclocal
    |   `-- internal
    |-- aclocal-1.14
    |   `-- internal
    |-- autoconf
    |   |-- Autom4te
    |   |-- autoconf
    |   |-- autoscan
    |   |-- autotest
    |   `-- m4sugar
    |-- automake-1.14
    |   |-- Automake
    |   `-- am
    |-- cmake-2.8
    |   |-- Modules
    |   |   |-- CMakeAddFortranSubdirectory
    |   |   |-- Compiler
    |   |   |-- CompilerId
    |   |   |-- FindCUDA
    |   |   |-- FortranCInterface
    |   |   |   `-- Verify
    |   |   |-- IntelVSImplicitPath
    |   |   `-- Platform
    |   |-- Templates
    |   |-- completions
    |   |-- editors
    |   |   |-- emacs
    |   |   `-- vim
    |   `-- include
    |-- doc
    |   |-- automake
    |   |-- pkg-config
    |   `-- ragel
    |-- info
    |-- libtool
    |   |-- config
    |   `-- libltdl
    |       |-- libltdl
    |       `-- loaders
    `-- man
        |-- man1
        `-- man7


67 directories
david@ubuntu:~/vlc/android/vlc/extras/tools/build$ 


2) BUILD FAILED
/opt/adt-bundle-linux-x86-20140702/sdk/tools/ant/build.xml:542: Unable to resolve project target 'android-19'

碰到这个问题,其实很简单,是因为SDK没有安装相应的API版本

进入/opt/adt-bundle-linux-x86-20140702/sdk/tools,运行sudo ./android

注意:一定要sudo,否则没有权限安装

选择需要安装的版本号,可以从~/vlc-android/vlc-android/project.properties中查看target=android-19

安装完成后,重新sh compile.sh就可以了


3)编译mpg123

编译vlc/modules/codec/mpg123.c最后发生链接错误,mpg123_close等函数链接失败

如果暂时不用mpg123编码,将链接失败的地方都注释后编译就可以了。


你可能感兴趣的:(vlc)