流媒体02:Linux交叉编译VLC-2.2.1

上一篇使用了Cygwin编译了VLC-2.2.1,编译过程正如官网所述,异常的慢。本篇介绍官网推荐的方法,使用Linux交叉编译VLC-2.2.1。

环境搭建

参考:Win32Compile
源码:vlc-2.2.1.tar.xz。
库: vlc-contrib-i686-w64-mingw32-20150630.tar.bz2。
Linux:Ubuntu Desktop 15.04
本打算使用LinuxMint17.2,但这个发行版是基于Ubuntu14.04,安装mingw-tools的版本为3.1.0,会致使x265、taglib、gnutls等module编译不过,Ubuntu15.04默认安装的mingw-tools版本为3.2.0,编译时不会出问题。

安装库

本章内容需保证Ubuntu能正常联网

12345
$ sudo apt-get install -y gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools$ sudo apt-get install -y lua5.2 libtool automake autoconf autopoint make gettext$ sudo apt-get install -y qt4-dev-tools qt5-default$ sudo apt-get install -y git subversion cmake cvs wine-dev yasm$ sudo apt-get install -y zip p7zip nsis bzip2

安装过程中可能会出现Configuring ttf-mscorefonts-installer的配置页面,按tab后,一路回车即可。

执行脚本

保存如下内容到脚本01.sh

123456789101112131415161718192021222324252627282930
#!/bin/sh

# This script enforces statically linking of libgcc, libstdc++-6, and libpthread,# without needing to rebuild gcc and mingw-w64 from scratch.# -static-libgcc -static-libstdc++ flags can not be used in a libtool build system,# as libtool removes flags that it doesn't understand.

move() {    [ -f $1 ] || return 1    mkdir -p old/    mv -v $* old/    return 0}

for x in i686 x86_64do    library_path_list=`$x-w64-mingw32-gcc -v /dev/null 2>&1 | grep ^LIBRARY_PATH|cut -d= -f2|sort|uniq`    IFS=':'    for i in $library_path_list    do        cd $i        move libstdc++-6.dll libstdc++.dll.a libgcc_s.a libgcc_s_sjlj-1.dll && ln -s libgcc_eh.a libgcc_s.a        move libpthread.dll.a libwinpthread.dll.a        move libwinpthread-1.dll        [ -d ../bin ] && cd ../bin && move libwinpthread-1.dll    donedone

exit 0

执行命令,将部分dll库移走备份。

1
$ sh 01.sh

解压源码

执行如下命令。

12
$ tar xJvf vlc-2.2.1.tar.xz$ cd vlc-2.2.1/

准备库

执行如下命令。

12
$ cd contrib/$ mkdir win32; cd win32
1
$ mv ~/vlc-contrib-i686-w64-mingw32-20150630.tar.bz2 vlc-contrib-i686-w64-mingw32-latest.tar.bz2

编译库。

12
$ ../bootstrap --build=i686-w64-mingw32$ make prebuilt

返回VLC源码根目录。

1
$ cd ../../

编译源码

首先bootstrap。

1
$ ./bootstrap

手动指定pkg_config路径。

1
$ export PKG_CONFIG_LIBDIR=$HOME/vlc-2.2.1/contrib/i686-w64-mingw32/lib/pkgconfig

再执行如下命令。

12
$ mkdir win32; cd win32$ ../extras/package/win32/configure.sh --host=i686-w64-mingw32

根据CPU内核个数,执行make命令。

1
make -j4 # 4核CPU

编译速度很快,一会儿就完成了。

打包

执行如下命令。

1
$ make package-win-common

执行完成后,当前目录下会生成vlc-2.2.1目录,即为绿色版VLC。

执行测试

Ubuntu下测试。

12
$ cd vlc-2.2.1$ wine vlc.exe

程序界面可正常启动,打开一个视频,音频正常,显示不正常。

将程序放置到Windows平台测试则正常。

~~ EOF ~~

时间: 2024-08-02 18:27:29

流媒体02:Linux交叉编译VLC-2.2.1的相关文章

定制ARM For Linux交叉编译工具详解

1. ToolChain 简介 ToolChain包含许多部件:主要之一是GCC,它可以是本机编译工具或交叉编译工具,GCC由Binuitls工具支持,Binutils是二进制代码维护工具,这些部件是编译程序的必要工具,同时他们也需要C库(glibc)支持.认真考虑一下:定制一套编译工具并不是想像中的易事!如果你还想继续看下去,必须具备如下技能: 熟悉Linux环境 熟悉Linux的必要命令和工具的使用 知道如何配置.编译核心和应用程序 以下章节将介绍怎样定制ARM交叉编译工具集,但对于大多数A

流媒体04:VLC2.2.1的Linux编译及调试

Windows环境下编译的VLC或通过Linux交叉编译的VLC,调试起来非常麻烦,之前的51CTO的博客写过老版本的VLC的调试,改动太多,速度也很慢,故新版本并没有继续在类似环境下继续折腾VLC的调试.偶然发现Ubuntu下直接编译VLC很快很好很方便,而且配合GDB调试只要加一条指令即可. 另外,配合QT Creator,在IDE中设置断点,读取打印变量等都非常的直观. 本文介绍VLC2.2.1的Linux编译,当然,编译的主要目的是:调试. 环境 与交叉编译VLC2.2.1一样的环境,请

用VLC做流媒体服务器

 VLC确切来说只是个播放器,是videolan的开源产品,videolan原来还有一个VLM,是服务器端,专门用来做流媒体服务器的,但是现在VLM的功能已经都集成进VLC了,所以也就可以用VLC来做流媒体服务器了.VLC同时提供了Linux版和windows版等多种版本,是流媒体服务器的一个不错的选择.           首先打开VLC播放器,选择"媒体"菜单中的"流"                  选择之后弹出如下界面:                 

如何建立Linux系统下交叉编译环境

最近有很多朋友在探讨关于建立Linux交叉编译环境的问题,下面就一些问题作一个说明,以期抛砖引玉. 基于Linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC机所构成.目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译.应用程序的开发和调试则需要通过宿主PC机来完成(所以称为交叉编译).双方之间一般通过串口,并口或以太网接口建立连接关系. 但在此我建议构建如下的交叉编译环境,适合个人或研发小组使用:单独拿出一台PC机(PII以上即可,就用以前淘汰的

《嵌入式Linux开发实用教程》——1.3 arm-linux交叉编译链

1.3 arm-linux交叉编译链 平常我们做的编译叫本地编译,也就是在当前平台编译,编译得到的程序也是在本地执行.相对而言的交叉编译指的是在一个平台上生成另一个平台的可执行代码. 常见的交叉编译有以下3种. 在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,编译出针对ARM CPU的可执行代码. 在Linux PC上,利用arm-linux-gcc编译器,编译出针对Linux ARM平台的可执行代码. 在Windows PC上,利用cygwin环境,运行arm-

流媒体03:VLC2.2.1的ActiveX编译

VLC2.2.1的ActiveX以及Firefox插件已经从原有的代码中移除,另存了一个工程.本文介绍ActiveX的编译. 环境 与交叉编译VLC2.2.1一样的环境,请参考流媒体02:Linux交叉编译VLC-2.2.1. 过程 在此只记录命令. 12345678910 $ git clone git://git.videolan.org/npapi-vlc.git$ cd npapi-vlc$ git submodule init$ git submodule update$ export

流媒体01:VLC-2.2.1编译

海狗哥的流媒体空间大部分介绍VLC的编译,跟踪了0.8.6i到1.0.X版本的编译方法,最近又把VLC-2.2.1编译了一下. 比起几年前的编译过程,VLC-2.2.1的编译错误更少,只是编译的文档还是没有同步更新. VLC的wiki中Win32Compile,提供了三个环境的编译方法: 官方推荐Linux(Ubuntu)下,使用交叉编译工具MinGW. Windows下使用MSYS+MinGW,此方法并不受官方支持. Windows下使用Cygwin编译,此方法为容易出错的(error-pro

黑客教你如何在Windows上运行Linux桌面应用程序

当微软将把Ubuntu引入Windows 10的消息传出时,官方的理由是它只是针对将Bash移植到Windows之中.笔者曾经预言,Linux Bash是伟大的,我们很快就会看到"人们试图将包括桌面在内的所有Linux用户空间程序移植到Windows之上." 在Windows Subsystem for Linux(WSL)发布的几天之后,黑客们就将Linux图形程序运行在了Windows Ubuntu之中. 方法很简单,安装了WSL和Ubuntu之后,你要做的第一件事就是为Windo

关于linux 红帽6.4安装使用valgrind

问题描述 关于linux 红帽6.4安装使用valgrind 我想用它检查内存泄露 但是它要求的glibc版本为2.2以上,而我当前的版本为2.0, 请问,改怎么弄 据说不推荐升级glib 解决方案 linux centos6.4 安装红帽linux交叉编译工具链的安装与使用 解决方案二: http://www.tuicool.com/articles/RVB36b