Msys+MinGW编译VLC
说明:本文只是对官方文档进行简单的翻译总结,旨在帮助一些英文不太好的朋友。官方文档请见wiki.videolan.org/Win32CompileMSYSNew。
Msys是MinGW的一个辅助工具,包括一些基于GCC的编译工具链。有了它,你能够轻松的在Windows上编译VLC(实际上,交叉编译VLC将是更加容易,轻松而且便捷)。
你需要安装以下工具:7-zip,notepad++。这两个软件,你可以从官方免费下载并安装(笔者提醒,解压请使用7-zip,编译文件请使用notepad++)。
TDM/MinGW的安装
首先,从http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.5.2.exe/download链接下载tdm-gcc-4.5.2.exe,运行安装程序,取消“Check for updated files…”,选择Create,安装到C:\MinGW目录下(默认目录是C:\MinGW32,请修改之),其它选项则保持默认。当完成安装时,请确保C:\MinGW\bin路径已经添加到环境变量PATH中。
MinGW工具包
从以下链接http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz下载,并解压到C:\MinGW。
Msys的安装
从以下链接下载Msys安装程序http://sourceforge.net/project/downloading.php?group_id=2435&filename=MSYS-1.0.11.exe。将其安装至C:\Msys\1.0下,在随后弹出的命令窗口中,按下面的方式回答问题
Accept Post Install[yn ]:y(输入y,下同)
MinGW Installed?[yn ]:y
Path to MinGW:C:/MinGW
Msys开发工具包的安装
从以下链接下载安装程序http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe。运行安装程序,保持默认即可。
AutoTools和libcrypt的安装
从如下链接下载程序,并将它们解压到C:\Msys\1.0(笔者提醒,请右击压缩文件,选择用7-zip解压)。
l http://prdownloads.sourceforge.net/mingw/libcrypt-1.1_1-2-msys-1.0.11-dll-0.tar.lzma
Glib和PKG-CONFIG
同上,请下载如下文件并将它们解压到C:\Msys\1.0
注意,请下载最新版本
l http://ftp.gnome.org/pub/GNOME/binaries/win32/glib
l ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip
l ftp://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-dev_0.23-3_win32.zip
l http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip
增加pkg config path 变量
打开C:\Msys\1.0\msys.bat(笔者提醒,请使用Notepat++打开),并在文件的最顶端增加set PKG_CONFIG_PATH=/win32/lib/pkgconfig。再次打开C:\Msys\1.0\bin\libtool文件(同样的,请使用Notepad++),定位到9926行,增加 /mingw/lib。追求后的文件看起来像是这样:compiler_lib_search_dirs="/usr/lib /usr/lib /bin/../lib/gcc-lib/i686-pc-msys/2.95.3-1 /bin/../lib/gcc-lib /usr/lib/gcc-lib/i686-pc-msys/2.95.3-1 /bin/../lib/gcc-lib/i686-pc-msys/2.95.3-1/../../../../i686-pc-msys/lib /usr/lib/gcc-lib/i686-pc-msys/2.95.3-1/../../../../i686-pc-msys/lib /mingw/lib"。我已经用红色字体标识出追加的内容。
LUA Tools
从以下链接下载luahttp://www.lua.org/ftp/lua-5.1.4.tar.gz。解压到C:\Msys\1.0\home\<username>(笔者提醒:<username>是你当前Windows的登录用户,默认情况下XP系统是Administrator,后续版本是你安装系统是的登录用户)。运行Msys,执行如下命令:
l cd /home/<username>/lua-5.1.4
l make mingw
l cd src
l cp *.exe *.dll /bin
l cd ..
预编译Contribs包
从以下位置下载contrib-20111017-win32-bin-gcc-4.4.4-runtime-3.17-only.tar包,解压文件,将其中win32文件夹复制到C:\Msys\1.0目录下,复制后的文件结构看起来像这个样子(以libdvdnav.a为例)
C:\Msys\1.0\win32\bli\libdvdnav.a
下载VLC源代码,解压到C:\Msys\1.0\home\<username>目录下,重命名为vlc。对于1.1.X版本的源代码(请从附件中下载configure-msys.sh及configure-common.sh两个文件,并保存至C:\msys\1.0\home\<username>\vlc\extras\package\win32目录下)
Whoami和hostname
从以下链接下载http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/coreutils文件,请选择最新版本,下载后的文件名大概像现在这个样子(coreutils-5.97-2-msys-1.0.11-ext.tar.lzma,注意-ext后缀)。解压后,将who.exe,whoami.exe及hostname.exe复制到C:\Msys\1.0\bin目录下。
从http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/libiconv处下载libintl动态链接库,文件名大概像(libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma),并解压至C:\Msys\1.0\bin目录下。
从http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/gettext处下载文件名像libintl-0.17-2-msys-dll-8.tar.lzma的文件,并解压到C:\Msys\1.0\bin目录下。
创建一个新文件,包含如下代码
echo 'lovey599'
保存为whoami(注意不要任何扩展名),并复制到C:\Msys\1.0\bin目录下。
打开C:\MSys\1.0\home\<username>\vlc\configure.ac文件,搜索VLC_COMPILE_HOST并作修改,以前的是如下样子AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2> /dev/null || hostname`", [host which ran configure])
修改成AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname`", [host which ran configure])
编译VLC
l 启动Msys
l cd vlc
l cp -v /usr/win32/share/aclocal/* m4/
l cp -v /usr/share/aclocal/* m4/
l PATH=/usr/win32/bin:$PATH ./bootstrap
l sh extras/package/win32/configure-msys.sh
l PATH=/usr/win32/bin:$PATH make
l make package-win32-base
完成后,你可以在C:\Msys\1.0\home\<username>\vlc目录下看见一个以vlc-x.x.x命名的文件夹,复制出来即可,这就是编译后的目标文件。
特别提醒,采用本文所描述的方法编译出来的VLC版本,需要附加tdm-gcc的运行库,它们分别是libgcc_s_sjlj-1.dll和libstdc++-6.dll,位于C:\MinGW\bin目录下,将其复制到vlc-x.x.x目录下即可。
Msys+MinGW编译VLC的更多相关文章
- 再次尝试windows下msys+MinGW编译ffmpeg
电脑上安装太多的开源库,环境变量里面一些常用的头文件都有几种,以前使用的编译ffmpeg的方法现在常常提示错误.从config.log中看,这些错误往往都是一些头文件引用错误导致.由于项目中继续编译自 ...
- 使用mingw编译完整Qt5的过程(使用了niXman的msys套装)good
使用mingw编译完整Qt5的过程 坛子里似乎已经有人编译出Qt5了,不过大多有问题,不是缺少opengl就是缺少openssl,还有缺少webkit的,本文提供的仍然不能说是绝对完整的,不过相对以前 ...
- MinGW 编译 libsndfile-1.0.25(只要有 MSYS,./configure make make install 就行了)
最近做的一个项目需要读写 wav 文件.在网上找到 libsndfile 刚好满足我的需要.但是编译的时候遇到了点小麻烦,这里记录一下编译的过程,免得下次再编译时忘记了. 因为是在编译完成若干天后写的 ...
- Msys+Mingw在手 妙用在心!
1 缘起 平时在一些c++群面,看见很多大学十分努力的学习c++/MFC ,看见在编程语言百花争芳的时候,C/C++还是很有很有魅力.估计很多初学者使用都是window下的visual stdio 开 ...
- win7下使用cygwin编译VLC
win7下使用cygwin编译VLC http://kathy.blog.51cto.com/1168050/295460 2010-04-15 14:54:01 标签:编译 休闲 VLC 职场 w ...
- ubuntu下编译VLC
ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...
- 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)
转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...
- 利用openssl管理证书及SSL编程第3部分:将MinGW编译的openssl dll导出def和lib供MSVC使用
将MinGW编译的openssl dll导出def和lib供MSVC使用 前面我们用mingw把openssl 编译成了动态库,得到下面2个dll文件: libeay32.dll ssleay32.d ...
- Windows7下使用mingw编译openssl
Windows7下使用mingw编译openssl 首先参考这篇文章安装mingw/minsys: http://blog.csdn.net/ubuntu64fan/article/details/8 ...
随机推荐
- python访问redis
python访问redis 1 Linux上安装redis a) 下载 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz b) 编 ...
- SDL2源代码分析5:更新纹理(SDL_UpdateTexture())
===================================================== SDL源代码分析系列文章列表: SDL2源代码分析1:初始化(SDL_Init()) SDL ...
- UNIX环境高级编程——线程属性之并发度
并发度控制着用户级线程可以映射的内核线程或进程的数目.如果操作系统的实现在内核级的线程和用户级的线程之间保持一对一的映射,那么改变并发度并不会有什么效果,因为所有的用户级线程都可能被调度到.但是,如果 ...
- Android初级教程三个Dialog对话框小案例
这里把三个对话框形式写在一个项目程序里面,用三个按钮控制显示什么样式的对话框. 先看布局文件代码: <LinearLayout xmlns:android="http://schema ...
- 详解EBS接口开发之WIP模块接口
总体说明 文档目的 本文档针对WIP模块业务功能和接口进行分析和研究,对采用并发请求方式和调用API方式分别进行介绍 内容 WIP模块常用标准表简介 WIP事物处理组成 WIP相关业务流程 WIP相关 ...
- 【游戏周边】Unity,UDK,Unreal Engine4或者CryENGINE——我应该选择哪一个游戏引擎
在digital-tutors看到的一篇文章,很多初学者都有这样的疑问,因此翻译到这里. 原文:http://blog.digitaltutors.com/unity-udk-cryengine-ga ...
- js对象、构造函数、命名空间、方法、属性
<script language="javascript"> var myNameSpace = new Object(); //构造一个命名 空间myCla ...
- Uva - 210 - Concurrency Simulator
自己写个双端队列,或者直接用deque,这个也比较好用 AC代码: #include <iostream> #include <cstdio> #include <cst ...
- javascript之DOM编程正则表达式引入
在javascript中,正则表达式和java中区别不大.只有一小部分不同的地方: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...
- JSP编译成Servlet(三)JSP编译后的Servlet
JSP编译后的Servlet类会是怎样的呢?他们之间有着什么样的映射关系?在探讨JSP与Servlet之间的关系时先看一个简单的HelloWorld.jsp编译成HelloWorld.java后会是什 ...