Pipcie 2011-03-03
这几天,刚好有时间(闲得蛋疼),于是想要去看看vlc的源码。出于本能的原因,下载了源码后,第一件想要做的事就是尝试着编绎此源码。网络上相关编绎资料也多, 但多数没法满足我的要求, 很多资料更多是作者随手记录的笔记,作者编绎的vlc版本与现在所下载的最新版本也有了一定的偏差。
编绎环境
linux版本:Fedora 9
编绎器:gcc 4.3.0
vlc源码版本:vlc-1.1.7 (已是此时的最新的版本)
qt4源码库:qt-everywhere-opensource-src-4.7.1.tar.gz
vlc 的源码在编绎中依赖的其它开源库过多, 所以首先我决定编绎出一个最小的能成功能运行的vlc实例出来。
一
1 编绎qt4 vlc 的ui界面依赖qt4作为界面库。
从http://qt.nokia.com/downloads/linux-x11-cpp 下载最新的qt开发包
qt-everywhere-opensource-src-4.7.1.tar.gz
解压文件后,编绎安装。
#tar zxvf qt-everywhere-opensource-src-4.7.1.tar.gz
#cd qt-everywhere-opensource-src-4.7.1
指定编绎选项
#./configure --prefix=/home/extern/install/qt4 -fast -no-largefile -no-sse3
/home/extern/install/qt4 为指定的编绎完成后的生成的qt4库,头文件 ,demo程序等安装目录。
#./gmake
#./gmake install
此时Ok后,会发现/home/extern/install/qt4目录下会生成bin lib include demos doc examples imports等目录
进入lib目录下会可能看到有pkgconfig这样的一个目录,pkgconfig目录的路径应该是home/extern/install/qt4/lib/pkgconfig
接下来编绎vlc 会使用该路径。
2
进入vlc目录
#cd vlc-1.17
建立一个脚本文件,用于配置编绎选项。
#vim build_simple_vlc.sh
此时为什么会建立一个脚本呢?主要是为了方便,每次为了修改configure配置,都得重新输入一长串命令, 这个还蛮麻烦的。有了该脚本后,以后改起配置,也省心省力多了。
view plaincopy to clipboardprint?
#!/bin/bash
export PKG_CONFIG_PATH="/home/extend/install/qt4/lib/pkgconfig"
./configure --enable-run-as-root --prefix=/home/extend/install/vlc-simple --disable-avcodec --disable-postproc --disable-a52 --disable-fribidi
#!/bin/bash
export PKG_CONFIG_PATH="/home/extend/install/qt4/lib/pkgconfig"
./configure --enable-run-as-root --prefix=/home/extend/install/vlc-simple --disable-avcodec --disable-postproc --disable-a52 --disable-fribidi
设置PKG_CONFIG_PATH环境变量,编译vlc时能自已寻找到qt库和头文件。其中/home/extern/install/qt4 /为编绎qt4时指定的安装目录。
export PKG_CONFIG_PATH="/home/extern/install/qt4/lib/pkgconfig"
指定vlc 编绎后的安装目录为/home/extern/install/vlc-simple
3 执行./build_simple_vlc.sh 脚本,接下来已经漫长的等待时间。一切Ok的话, 在指定的安装目录/home/extern/vlc-simple下会看到已编译ok的vlc可执行文件和一些vlc库文件。
测试一下,我们所编绎的vlc程序(注意形在图形界面下的终端)
#cd /home/extern/install/vlc-simple/bin
#./vlc
success!可以看到vlc界面启动成功。
总结:以上编绎是vlc程序还仅仅只是能够实现音频解码,想要实现视频解码,还得编绎其它更多的依赖库文件。我的目标是学习vlc 的设计思想,编绎vlc对我来说只是学习它的方法之一,以上所编绎的vlc程序对我来说应是完全够用了。
PS:一个小技艺, 在查看configure 的配置选项,我喜欢先执行./configure --help > configure_help.txt 命令,将所有的configure配置选项写入configure_help.txt文件,然后再打开configure_help.txt文件进行查看。