Top

本地磁盤小日記ヾ(≧▽≦*)ゝ

世界無限大.且行且珍惜w;
計算機科學視覺與美術在學|跨女|程序媛|創作者|中日英OK|公主w;

教程:在Win下利用Cygwin编译VideoLAN2.2.4官方版.

| Comments

VideLAN是一个开源项目。它旗下的VLC是一款出色的以流媒体支援强大和跨平台的特性而著称的开源多媒体播放器。 这篇教程就是教大家通过Cygwin环境在Win平台下编译VLC这款播放器。#轻教程#

本文参考了文章:http://higoge.github.io/2015/07/16/sm01/index.html%E3%80%82%E5%9C%A8%E6%AD%A4%E8%A1%A8%E7%A4%BA%E9%9D%9E%E5%B8%B8%E6%84%9F%E8%B0%A2%E7%9A%84%E8%AF%B4%EF%BC%81

参考文章作者 的博客:http://higoge.github.io%E3%80%82

相关链接:

VLC官方源码:ftp://ftp.videolan.org/pub/videolan/

Cygwin离线安装资源/VLC库资源:https://pan.baidu.com/s/1o8ubedW#list/path=%2F%E6%B1%AA%E6%B1%AA%E7%9A%84%E7%BD%91%E7%9B%98

(提取密码xo9s 解压密码higoge)。

Cygwin官网:https://cygwin.com/install.html


步骤一、在Win上部署Cygwin环境。

首先下载Cygwin的安装包:如果您觉得自己的网络比较好的话,就请使用上面cygwin官网那个URL下载在线安装器,安装时会需要网络。如果反之,就选择上面的离线安装的那个URL吧,里面有已经打包好的163源的cygwin安装包,里面预置的离线文件是可以满足本次编译的。注意,我们推荐您安装32位版本的Cygwin。

安装Cygwin:额..这里就不再过多赘述了噗噗噗,cygwin安装和基础上手还是很简单的,安装器也都是英文,跟着向导走就好了。不过等到安装器说选择安装的包那一步的时候,我们需要选择一些我们能用得上的包,再进行安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
Archive:

    unzip
  
    xz
  
    zip
  
Devel:

    autoconf
  
    automake
  
    binutils
  
    cmake
  
    cvs
  
    cygwin64-libiconv
  
    gcc-core
  
    gcc-g++ (3.4.4-3)
  
    gdb
  
    gettext-devel
  
    git
  
    git-completion
  
    libtool
  
    make
  
    mingw-binutils
  
    mingw-gcc-core
  
    mingw-gcc-g++
  
    mingw-pthreads
  
    mingw-runtime
  
    mingw-w32api
  
    mingw64-i686-binutils
  
    mingw64-i686-gcc-core
  
    mingw64-i686-g++
  
    mingw64-i686-pkgconfig
  
    mingw64-i686-runtime
  
    mingw64-x86_64-binutils
  
    mingw64-x86_64-gcc-core
  
    mingw64-x86_64-g++
  
    mingw64-x86_64-pkg-config
  
    mingw64-x86_64-runtime
  
    nasm
  
    patch
  
    patchutils
  
    pkg-config
  
    subversion
  
Editor:

    vim
  
Libs:

    crypt
  
    expat
  
    libgcrypt-devel
  
    libgcrypt20
  
Net:

    curl
  
    openssh
  
Text:

    gettext
  
Utils:

    cygutils-extra
  
    dos2unix
  
Web:

    wget
  

具体参考这篇文章吧,如果是第一次接触想要熟悉一下Cygwin环境的话:http://higoge.github.io/2015/07/15/tools01/%E3%80%82

安装完了,直接以管理员身份运行Cygwin就行了。软件窗口右键标题栏也有很多设置的地方,可以自己玩一下。


步骤二:准备VLC的源码和库文件。

先去上面的vlc官方ftp链接上去下载vlc的源码,比如2.2.4版本的文件名就是:vlc-2.2.4.tar.xz那个。

然后去网盘链接,下载vlc.7z,解压出"rcc.exe"和"vlc-contrib-i686-w64-mingw32-20150630.tar.bz2"这个库文件。

最后将这获取到的三个文件复制到一个文件夹目录当中,比如说笔者就复制到了F:/vlc这个文件夹路径。


步骤三:准备编译VLC。

第一步,以管理员身份打开cygwin,把刚刚准备好的源码导入到cygwin环境。

执行如下命令:

1
2
3
cp /cygdrive/f/vlc/vlc-* .

cp /cygdrive/f/vlc/rcc.exe .

注意加".“。

完成后ls一波,你就能在cygwin环境里看到那三个文件了。

第二步,把vlc源码解压。

执行如下命令:

1
2
3
4
5
tar xJvf vlc-2.2.4.tar.xz

如果上面那个不管用就tar -xvf vlc-2.2.4.tar.xz

cd vlc-2.2.4/

第三步,准备vlc的库。

执行:

1
2
3
cd contrib

mkdir win32; cd win32

手动调用本地库

1
mv ~/vlc-contrib-i686-w64-mingw32-20150630.tar.bz2 vlc-contrib-i686-w64-mingw32-latest.tar.bz2

编译:

1
2
3
../bootstrap --build=i686-w64-mingw32

make prebuilt

清理一波:

1
rm ../i686-w64-mingw32/bin/{luac,moc,rcc,uic}

如果至此你发现目录下的rcc.exe消失了,你可以手动将其重新导入:

1
2
3
cp /cygdrive/d/rcc.exe ../i686-w64-mingw32/bin

cd ../../

第四步,开始编译和打包VLC。

修改一下环境变量:

1
export PATH=/usr/i686-w64-mingw32/sys-root/mingw/bin/:$PATH

编译前检查:

1
2
3
4
5
6
./bootstrap

mkdir win32; cd win32

../extras/package/win32/configure.sh --host=i686-w64-mingw32

至此完毕后,弹出libvlc configuration和一些版本号相关信息,即表示已经基本做好了编译和打包的准备了。

Make:

1
2
3
4
make -j8

备注:j后面的那个数字表示你打算启动处理器的几个核心来进行Make,请酌情修改。

编译的话,就多等一会吧~

编译完了打包一波:

1
make package-win-common

执行完成后,你的cygwin目录下vlc那个文件夹下的win32就会显示出你刚刚编译好的文件了。

键入pwd可以查看文件所在目录。


如果你运行之后发现GUI根本无法启动的话,原因是libqt4_plugin.dll需要调用libstdc++-6.dll和libgcc_s_sjlj-1.dll库,而在我们刚刚的编译过程当中它却并没有给我们加载上Orz。没关系,我们可以手动加载一波:

1
cp /usr/i686-w64-mingw32/sys-root/mingw/bin/{libstdc++-6.dll,libgcc_s_sjlj-1.dll} vlc-2.2.1/

好了,现在在测试一波看一看。


@本地磁盘姬 整理

ohayou.moeres.org

微博@萌萌的本地磁盘w

2017年02月25日

Comments