vlc-2.2.4 交叉编译 UbuntuX64_1604_Desktop 编译windows版本vlc

13 篇文章 0 订阅

耗时:8小时

01 编译环境

ThinkPad x240 i5 8G,主机windows10,使用vpn,可以访问google。有些更新需要vpn。
VMware Workstation 12,UbuntuX64_1604_Desktop, 自带gcc5.3.1。
安装VMWare tools。

  sudo apt-get update
  sudo apt-get upgrade

upgrade后gcc升级到5.4.0版本。

ubuntu下载地址:http://releases.ubuntu.com/16.04/ubuntu-16.04-desktop-amd64.iso

快照,虚拟机9.25GB

02 安装编译需要的软件

按照https://wiki.videolan.org/Win32Compile说明,UbuntuX64系统。操作步骤:

  sudo apt-get install gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools  # 对应win32版本
  sudo apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-tools # 对应win64版本
  sudo apt-get install lua5.1 lua5.2 liblua5.1-dev liblua5.2-dev
  sudo apt-get install libtool automake autoconf autopoint make gettext
  sudo apt-get install pkg-config
  sudo apt-get install qt4-dev-tools qt5-default
  sudo apt-get install git subversion
  sudo apt-get install cmake cvs
  sudo apt-get install zip p7zip p7zip-full nsis bzip2
  sudo apt-get install yasm ragel
  sudo apt-get install wine-dev
  sudo apt-get install vim   # 个人喜好,可不安装

  # 安装jdk,有些插件需要运行ant,jdk下载地址。
  # http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz
  tar -zxvf jdk-8u102-linux-x64.tar.gz
  sudo mkdir /usr/lib/jvm
  cp -R jdk1.8.0_102 /usr/lib/jvm/
  # 在/etc/profile最后加入下面内容。
  sudo vi /etc/profile
  export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_102
  export JRE_HOME=${JAVA_HOME}/jre
  export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  export PATH=${JAVA_HOME}/bin:$PATH

  source /etc/profile
  # 重启系统

  sudo apt-get install ant

  # 完成后,重启,14.7GB,做快照
  # 到此,耗时4小时。

03 下载源代码

本次实验使用当前最新版本 vlc-2.2.4 版本。
下载地址:http://get.videolan.org/vlc/2.2.4/vlc-2.2.4.tar.xz
解压到 $HOME/vlc-2.2.4$HOME/vlc-2.2.4即为代码主目录。

如需修改和对比代码,可参考:
// git源码地址:git://git.videolan.org/vlc.git
// vs2013调试版本:https://github.com/sunqueen/vlc-2.2.1.32-2013

04 编译vlc-2.2.4

04.01 编译win64版本

使用 x86_64-w64-mingw32,x86_64-w64-mingw32是64位linux下编译win64 vlc位版本必须使用的交叉编译库。

cd $HOME/vlc-2.2.4
mkdir -p contrib/x86_64 && cd contrib/x86_64
../bootstrap --host=x86_64-w64-mingw32
make prebuilt  # 会下载 vlc-contrib-x86_64-w64-mingw32-latest.tar.bz2 并解压到 contrib/x86_64-w64-mingw32
 # curl -f -L -- ftp://ftp.videolan.org/pub/videolan/contrib/x86_64-w64-mingw32/vlc-contrib-x86_64-w64-mingw32-latest.tar.bz2

#******************************************************
# 不建议自己编译contrib下面的组件,有个别的编译不过,下载各个组件包也需要较长时间(大约4小时左右,有些需要vpn)

# make fetch all  # 重新下载源码压缩包到contrib/tarballs/下面
# make # make 生成contrib/win32/子目录下内容各个子文件夹

# 如果遇到一个关于jpegsrc.v9a.tar.gz的编译错误,可以做如下修改
# sudo vi ../../contrib/src/jpeg/rules.mak
# JPEG_URL :=   $(CONTRIB_VIDEOLAN)/jpegsrc.v$(JPEG_VERSION).tar.gz ==>  $(CONTRIB_VIDEOLAN)/jpeg/jpegsrc.v$(JPEG_VERSION).tar.gz
# #http://downloads.videolan.org/pub/contrib/jpeg/jpegsrc.v9a.tar.gz
# 会有失败
#******************************************************

 # 退到主目录
cd $HOME/vlc-2.2.4
mkdir x86_64 && cd x86_64
../bootstrap
export PKG_CONFIG_PATH=$HOME/vlc-2.2.4/contrib/x86_64-w64-mingw32/lib/pkgconfig
export PKG_CONFIG_LIBDIR=$HOME/vlc-2.2.4/contrib/x86_64-w64-mingw32/lib/pkgconfig
export PKG_CONFIG_PATH_CUSTOM=$PKG_CONFIG_LIBDIR

../configure --host=x86_64-w64-mingw32  # 这个过程,会有一个wine更新过程,自动完成的
make

make package-win-common  # 生成 _win32 和 vlc-2.2.4 目录
wine ./vlc-2.2.4/vlc.exe  # 可以启动vlc.exe
make package-win32-7zip  # 生成 vlc-2.2.4-win64.7z 和 symbols-2.2.4。拷贝到windows系统,解压后运行。这一步会下载npapi-vlc源码到x86_64/npapi-vlc下并编译,会覆盖原有的x86_64/npapi-vlc文件。需要vpn。
make package-win32-debug-7zip  # 生成 vlc-2.2.4-win64-debug.7z

04.02 编译win32版本

使用 i686-w64-mingw32,i686-w64-mingw32是64位linux下编译win32 vlc位版本必须使用的交叉编译库。

cd $HOME/vlc-2.2.4
mkdir -p contrib/win32 && cd contrib/win32
../bootstrap --host=i686-w64-mingw32
make prebuilt # 会下载vlc-contrib-i686-w64-mingw32-latest.tar.bz2 并解压到 contrib/i686-w64-mingw32 目录下
# curl -f -L -- "ftp://ftp.videolan.org/pub/videolan/contrib/i686-w64-mingw32/vlc-contrib-i686-w64-mingw32-latest.tar.bz2"

# ******************************************************
# 不建议自己编译contrib下面的组件,有个别的编译不过,下载各个组件包也需要较长时间(大约4小时左右,有些需要vpn)
# make fetch all # 重新下载源码压缩包到contrib/tarballs/下面
# make # make 生成contrib/win32/子目录下内容各个子文件夹
# 最后 Makefile:1243: recipe for target 'versioninfo.lo' failed 错误。
# ******************************************************

# 退到主目录
cd $HOME/vlc-2.2.4
mkdir win32 && cd win32
../bootstrap
export PKG_CONFIG_PATH=$HOME/vlc-2.2.4/contrib/i686-w64-mingw32/lib/pkgconfig
export PKG_CONFIG_LIBDIR=$HOME/vlc-2.2.4/contrib/i686-w64-mingw32/lib/pkgconfig
export PKG_CONFIG_PATH_CUSTOM=$PKG_CONFIG_LIBDIR

../configure --host=i686-w64-mingw32
make

make package-win-common   # 生成 _win32 和 vlc-2.2.4 目录
wine ./vlc-2.2.4/vlc.exe  # 可以启动vlc.exe
make package-win32-7zip   # 生成 vlc-2.2.4-win32.7z 和 symbols-2.2.4。拷贝到windows系统,解压后运行。这一步会下载npapi-vlc源码到win32/npapi-vlc下并编译,会覆盖原有的win32/npapi-vlc文件。需要vpn。
make package-win32-debug-7zip  # 生成vlc-2.2.4-win32-debug.7z
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值