vlc的編譯一直是個大坑,作過音視頻開發的很多人想必都踩過,開篇引用官方wiki一句話:linux
Compiling VLC is not an easy task.c++
本文記錄了筆者在Linux和Windows下編譯VLC-3.0.0 Nightly發佈版的詳細過程,供各位爬坑參考。嗯,就醬, good luck :)git
編譯使用了Ubuntu 14.04 x64 LTS版(16.x應該也沒問題)bootstrap
VLC要求編譯器支持c/c++11,否則"./configure"時候報錯。Ubuntu14.04自帶的GCC4.8("gcc -v"可查看版本),故升級至5.4.1。ubuntu
添加PPA並安裝windows
>> sudo add-apt-repository ppa:ubuntu-toolchain-r/test >> sudo apt-get update >> sudo apt-get upgrade >> sudo apt-get install gcc-5 g++-5
更新連接bash
>> sudo ln -s /usr/bin/gcc-5 /usr/bin/gcc -f >> sudo ln -s /usr/bin/g++-5 /usr/bin/g++ -f
>> sudo apt-get install git build-essential pkg-config libtool automake autopoint gettext
參考連接: Wiki_VLC_Contrib Statuside
官方給的contrib有一些已經失效了,故進行了替換。命令以下:工具
>> sudo apt-get build-dep vlc >> sudo apt-get -y install libvorbis-dev libogg-dev libtheora-dev speex \ libspeex-dev flac libflac-dev x264 libx264-dev a52-0.7.4 liba52-0.7.4-dev \ mpeg2dec libmpeg2-4-dev faad libfaad-dev faac libfaac-dev lame libmp3lame-dev \ libavdevice-dev libmad0 libmad0-dev libschroedinger-dev libebml-dev libdca-dev \ twolame libtwolame-dev libmpcdec-dev libvorbisidec1 libvorbisidec-dev \ libass-dev libmatroska-dev libdvbpsi-dev libmodplug1 libmodplug-dev libshout3 \ libshout3-dev libdvdread4 libdvdnav4 libdvdnav-dev livemedia-utils \ liblivemedia-dev libcddb2 libcddb2-dev libcdio13 libcdio-dev \ libxcb-composite0-dev libcdio-utils vcdimager libvcdinfo0 libvcdinfo-dev \ libgpg-error0 libgpg-error-dev libgcrypt11-dev gnutls-bin libgnutls-dev \ libdap-bin libdap-dev libxml2 libxml2-dev libpng12-0 libpng12-dev libjpeg8 \ libtiff5 libsdl1.2-dev libsdl-image1.2 libsdl-image1.2-dev libc-bin gettext \ libfreetype6 libfreetype6-dev libfribidi-dev libfribidi0 zlib1g zlib1g-dev \ libtag1-dev libcaca0 libcaca-dev caca-utils libqt4-dev libportaudio2 \ libupnp-dev libupnp6 libexpat1 libexpat1-dev yasm libxcb-xv0 libxcb-xv0-dev \ libx11-xcb1 libx11-xcb-dev liblua5.2-dev libswscale-dev
須要安裝ffmpeg而且要求libavcodec版本在57以上(含)。
若是以前裝過從命令行輸入:ui
>> ffmpeg
查看一下libavcodec版本,
官方給的PPA上,libavcodec版本是56,因此直接用源碼安裝。
安裝yasm
>> sudo apt-get install yasm
從官網clone最新的git倉庫
>> git clone https://git.ffmpeg.org/ffmpeg.git >> cd ./ffmpeg
指定install目錄爲"./host",指定編譯爲動態庫,開始編譯。
>> ./configure --prefix=host --enable-shared --disable-doc >> make && make install
把生成的動態庫文件拷貝到"/usr/bin/"目錄下
>> cd ./host/lib >> sudo cp ./* /usr/bin/
安裝完成,能夠切到host/bin目錄下執行一下"./ffmpeg"確認。
確認上述準備工做完成以後,總算能夠開始編譯VLC 3.0.0了。
先去VLC官網下載vlc-3.0.0-nightly版代碼: VLC Source
這裏以我用的"vlc-3.0.0-20171129-0230-git.tar.xz"爲例。
>> cd /root/Desktop/ >> wget https://nightlies.videolan.org/build/source/vlc-3.0.0-20171129-0230-git.tar.xz >> tar -Jcf vlc-3.0.0-20171129-0230-git.tar.xz >> cd ./vlc-3.0.0-git >> ./bootstrap
運行configure,參數可參考: VLC_Configure
>> mkdir ./out >> ./configure --prefix=/root/Desktop/vlc-3.0.0-git/out/ --disable-qt --enable-run-as-root
編譯安裝(這步須要***)
>> make && make install
交叉編譯work
TODO