嵌入式 Ubuntu12.04下进行交叉编译vlc_win32

原创 2013年12月02日 14:42:36
官方编译参考:
https://wiki.videolan.org/UnixCompile
ln –s 源文件 目标文件

一开始使用cygwin编译VLC2.0.0,解决完一堆的问题之后,出现"Undefine refrence to _Unwind_Sjlj_Resume_" ,看起来是mingw编译器的问题,各种方法都试过了,还是没法继续编译。于是使用另一种方法,linux环境下用交叉编译工具mingw进行编译,终于了生成可运行的VLC。这种方法需要联网获取一些新的第三方库和工具。

编译前准备,虚拟机,Ubuntu 10.04
安装交叉编译工具链
apt-get install gcc-mingw32 mingw32-binutils
安装一些必要的工具
apt-get install lua5.1
apt-get install libtool automake autoconf autopoint make gettext
apt-get install pkg-config
apt-get install git
apt-get install subversion
apt-get install cmake cvs       <=用于编译第三方库,对于直接下载编译好的可以不用
apt-get install zip p7zip nsis bzip2 <=用于打包,nsis可以生成自动安装的包
获取最新的VLC源码,vlc-2.0.4
git clone git://git.videolan.org/vlc.git vlc
cd vlc
 安装第三方库
mkdir -p contrib/win32
cd contrib/win32
../boostrap --host=i586-mingw32msvc
make prebuilt    <=自动下载已经编译好的第三方库并安装
回去VLC目录运行bootstrap
cd ../../
./boostrap
创建一个输出目录
mkdir win32
cd win32
运行configure配置脚本,可以使用--disable-**去掉不想要的功能
../configure --host=i586-mingw32msvc
make

编译的时候出现错误
dialogs/preferences.hpp:72:19: error: expected unqualified-id before 'char'
dialogs/preferences.hpp:72:18: error: expected ';' at end of member declaration
dialogs/preferences.hpp:72:24: error: expected unqualified-id before ',' token

locate vlc_windows_interfaces.h
找到vlc_windows_interfaces.h
 37 行#include 后加一行
 #undef small
即可编译通过。一开始使用cygwin编译VLC2.0.0,解决完一堆的问题之后,出现"Undefine refrence to _Unwind_Sjlj_Resume_" ,看起来是mingw编译器的问题,各种方法都试过了,还是没法继续编译。于是使用另一种方法,linux环境下用交叉编译工具mingw进行编译,终于了生成可运行的VLC。这种方法需要联网获取一些新的第三方库和工具。
编译前准备,虚拟机,Ubuntu 10.04
安装交叉编译工具链
apt-get install gcc-mingw32 mingw32-binutils
安装一些必要的工具
apt-get install lua5.1
apt-get install libtool automake autoconf autopoint make gettext
apt-get install pkg-config
apt-get install git
apt-get install subversion
apt-get install cmake cvs       <=用于编译第三方库,对于直接下载编译好的可以不用
apt-get install zip p7zip nsis bzip2 <=用于打包,nsis可以生成自动安装的包
获取最新的VLC源码,vlc-2.0.4
git clone git://git.videolan.org/vlc.git vlc
cd vlc
 安装第三方库
mkdir -p contrib/win32
cd contrib/win32
../boostrap --host=i586-mingw32msvc
make prebuilt    <=自动下载已经编译好的第三方库并安装
回去VLC目录运行bootstrap
cd ../../
./boostrap
创建一个输出目录
mkdir win32
cd win32
运行configure配置脚本,可以使用--disable-**去掉不想要的功能
../configure --host=i586-mingw32msvc
make

编译的时候出现错误
dialogs/preferences.hpp:72:19: error: expected unqualified-id before 'char'
dialogs/preferences.hpp:72:18: error: expected ';' at end of member declaration
dialogs/preferences.hpp:72:24: error: expected unqualified-id before ',' token

locate vlc_windows_interfaces.h
找到vlc_windows_interfaces.h
 37 行#include 后加一行
 #undef small
即可编译通过。

1,GCC版本信息
#gcc -v
Using built-in specs.
Target: i686-linux-gnu
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)

 

1 安装vlc依赖的库 

sudo apt-get build-dep vlc 

 

2,安装必须的工具包否则后面会出错
#apt-get install autoconf automake libtool git subversion

 

 

3,安装win32下编译工具


sudo apt-get install mingw32 

#apt-get install gcc-mingw32

#apt-get install mingw32-binutils

 

4.安装最新的VLC
#cd /home/git_work
#git clone git://git.videolan.org/vlc.git

5.进入vlc目录,进入第三方包目录
#cd vlc
#mkdir -p contrib/win32
#cd contrib/win32


6.配置并编译第三方包
#../bootstrap --host=i586-mingw32msvc  指定交叉编译工具
 Guessing build system... i686-linux-gnu
 Creating configuration file... config.mak
 Bootstrap completed.

 Run "make" to start compilation.
 Other targets:
  * make install      same as "make"
  * make prebuilt     fetch and install prebuilt binaries
  * make list         list packages
  * make fetch        fetch required source tarballs
  * make fetch-all    fetch all source tarballs
  * make distclean    clean everything and undo bootstrap
  * makemostlyclean  clean everything exceptsource tarballs
  * make clean        clean everything
  * make package      prepare prebuilt packages

#make prebuilt
 Fixingup ./lib/libdvdread.la
 Fixingup ./lib/libfreetype.la
 Fixingup ./lib/libzvbi.la
 Fixingup ./lib/libresid-builder.la
 Fixingup ./lib/libschroedinger-1.0.la
 Fixingup ./lib/libFLAC.la
 Fixingup ./change_prefix.sh
 
7.回到vlc根目录
#cd ../..
#./bootstrap
 + rm -fpo/Makevars.template ABOUT-NLS
 + echo
 + mv -fINSTALL.git INSTALL
 + rm -f stamp-h*
 + set +x
 Successfullybootstrapped

8.配置makefile
#mkdir win32 && cd win32
#../extras/package/win32/configure.sh --host=i586-mingw32msvc

checking forLUA... no
configure:WARNING: No package 'lua5.1' found, trying lua >= 5.1 instead
checking forLUA... yes
checking forluac... no
出错就安装
#apt-get install lua5.1

#../extras/package/win32/configure.sh --host=i586-mingw32msvc
 libvlcconfiguration
 --------------------
 version               : 2.1.0-git
 system                : mingw32
 architecture          : i586 mmx sse sse2
 optimizations         : yes
 vlcaliases            : cvlc rvlc qvlc svlc
 Tobuild vlc and its plugins, type `./compile' or `make'.

9.编译
#make

10.打包
#make package-win32-zip

11.在vlc/win32目录下可以找到vlc-2.1.0-git-win32.zip文件,复制到windows目录下,解压缩即可运行

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

环境 Ubuntu12.04


1. 安装编绎器

  1. sudo apt-get install binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686 
[html] view plaincopy
  1. sudo apt-get install gcc-mingw-w64 g++-mingw-w64  

下载

ftp://ftp.jp.debian.org/debian/pool/main/m/mingw-w64

- You must use mingw-w64 3.0 or later (Please note that the binary size is about 7M)
- 
http://packages.debian.org/experimental ... 4-i686-dev

 

 

改一下名字,不然装不了

     mv mingw-w64-i686-dev_3.0~svn5408-1_all.deb  mingw-w64-i686-dev_3.deb

 

  1. sudo dpkg -i mingw-w64-i686-dev_3.deb

 

[html] view plaincopy
  1. sudo dpkg -i mingw-w64-i686-dev_3.0~svn5408-1_all.deb   

 

2.安装相关工具

  1. sudo apt-get install ua5.1 libtool automake autoconf autopoint make gettext pkg-config git subversion cmake cvs zip p7zip-full nsis bzip2 
[html] view plaincopy
  1. sudo apt-get install ua5.1 libtool automake autoconf autopoint make gettext pkg-config git subversion cmake cvs zip p7zip-full nsis bzip2  

3.下源码

  1. git clone git://git.videolan.org/vlc.git vlc 
[html] view plaincopy
  1. git clone git://git.videolan.org/vlc.git vlc  

 

4.准备第三方库

  1. cd vlc 
  2. mkdir -p contrib/win32 
  3. cd contrib/win32 
  4. ../bootstrap --host=i686-w64-mingw32 
  5. make prebuilt 
[html] view plaincopy
  1. cd vlc  
  2. mkdir -p contrib/win32  
  3. cd contrib/win32  
  4. ../bootstrap --host=i686-w64-mingw32  
  5. make prebuilt  

会把依赖的 第三方库下载下来.

[html] view plaincopy
  1. cd contrib/win32  
  2. make .qt4  

5.Bootstrap

回到vlc目录下

 

[html] view plaincopy
  1. cd - 
  2. ./bootstrap 
[html] view plaincopy
  1. cd  
  2. ./bootstrap  

6.Configure

[html] view plaincopy
  1. mkdir win32 && cd win32 
  2. ../configure --host=i686-w64-mingw32  
[html] view plaincopy
  1. mkdir win32 && cd win32  
  2. ../configure --host=i686-w64-mingw32   
这里你能加上自己的配置
[html] view plaincopy
  1. ../configure --help 
[html] view plaincopy
  1. ../configure --help  
出现下面打印,配置成功

libvlc configuration
--------------------
version               : 2.1.0-git
system                : mingw32
architecture          : i686 mmx sse sse2
optimizations         : yes
vlc aliases           : cvlc rvlc qvlc svlc

To build vlc and its plugins, type `make', or `./compile' if you like nice colors.

7.开编

[html] view plaincopy
  1. make  
[html] view plaincopy
  1. make   
开始编绎,漫长等待.
ok
打包
[html] view plaincopy
  1. make package-win32-zip 
[html] view plaincopy
  1. make package-win32-zip  



安装之后 完美运行

8.总结

qt的版本太旧,编译时会有问题。所以需要从新下载编译qt。

vlc官方文档用的 i586-mingw32msvc
这里要换成 i686-w64-mingw32

相关文章推荐

Win32Compile---ubuntu 12.04下交叉编译win32 vlc

原文请参考:https://wiki.videolan.org/Win32Compile/http:// configure过程中如果出现error: LibVLC requires mingw-r...

ubuntu平台,VLC/LibVLC交叉编译,生成win32版本,以及LibVLC增加录像接口

这几天要用LibVLC播放视频,还需要增加一个在播放过程中录制的功能,于是把VLC完整编译了一遍,也添加了录像的接口。 原先是想在windows平台用mingw+msys交叉编译的,不过vlc官网一再...
  • avsuper
  • avsuper
  • 2017年08月02日 18:19
  • 205

ubuntu13.10上交叉编译win32运行的vlc2.0.3总结

最近做交叉编译真是做的死去活来,不过 最后还是成功了,在此总结一下。 一、安装交叉编译环境 1. sudo apt-get install gcc-mingw-w64-i686 g++-m...

Fedora 17下交叉编译vlc-2.0.6-win32小记

关于编译windows下的vlc网上的教程除了翻译N年前wiki官网的那些蚂蚁文之外,可以说基本没啥参考意义和价值。因为那些都是非常老的版本,0.8.x或者1.x.x,而我这个人有喜欢新鲜事儿,所以就...

【玩转VLC】--- Ubuntu12.04下編绎win32版本vlc

环境 Ubuntu12.04 1. 安装编绎器 sudo apt-get install gcc-mingw-w64 g++-mingw-w64 下载  - You must use ...
  • tx3344
  • tx3344
  • 2013年01月31日 17:09
  • 4078

ubuntu14.04交叉编译vlc2.1.5源码,编译出在win32下运行的程序

要开始编译vlc,首先就是到官网去查找资料,为了满足需求,编译出来在win32下运行,我要修改vlc的plugins下的dll代码 https://wiki.videolan.org/Win32Co...

ubuntu14.04交叉编译vlc2.1.5源码,编译出在win32下运行的程序

要开始编译vlc,首先就是到官网去查找资料,为了满足需求,编译出来在win32下运行,我要修改vlc的plugins下的dll代码 https://wiki.videolan.org/Win32Com...

[cocos2d-x 学习] 第一个cocos2d-x win32程序和NDK交叉编译

第一个cocos2d-x win32程序 打开cocos2d-x工程,(如何打开?上一篇有讲过了,点这里),选择项目解决方案右键->添加->新建项目->选择cocos2d-x win32Appl...
  • Gitxs
  • Gitxs
  • 2012年11月01日 12:58
  • 10888

cocos2d-x win32程序和NDK交叉编译

第一个cocos2d-x win32程序 打开cocos2d-x工程,(如何打开?上一篇有讲过了,点这里),选择项目解决方案右键->添加->新建项目->选择cocos2d-x win32Appl...

cocos2d-x(一) win32交叉编译android项目经验

Hello!大家好,欢迎来到互撸娃的博客。这是我的第一篇博文。今天教大家怎么把2dx的win32项目交叉编译成android项目并最终编译成apk。我会讲的很详细。并注明我遇到的一些错误。我所用的co...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 Ubuntu12.04下进行交叉编译vlc_win32
举报原因:
原因补充:

(最多只允许输入30个字)