Win32Compile
How to compile VLC for Windows
Contents
Before you start
One common desire that leads people to want to rebuild VLC is to "rebuild a debug version" or "add printf()s", but this is not strictly necessary, as VLC includes a debug logging feature by default. If you are using a binary release (or have already built VLC), just run 'vlc.exe'
and select "Messages..." from the "Tools" menu.
You can also run VLC from the Windows command-line interpreter, cmd.exe
(a.k.a. "DOS window"), in which case you'll be able to use the command-line arguments. You can obtain a list of these command line arguments by typing 'vlc --help'
or 'vlc --help --advanced'
.
To store a debug log of the current VLC session, you can use 'vlc -vvv --extraintf=logger'
. You will end-up with a vlc-log.txt
file in your current directory.
Building VLC from source
If you want to build VLC from source, you have several choices:
Method | Documentation | Notes |
---|---|---|
Cross-compile with Mingw32 on Linux | None: read this page | Preferred method (uses cross compilation) Note: read Win32CompileFedora13 if building on Fedora 13 |
Native-compile with MSYS+MINGW | Win32CompileMSYSNew | Preferred native compilation method. MSYS is a minimal build environment to compile Unixish projects under Microsoft Windows. It provides all the commonly-required Unix tools (like sh, gmake, and so forth). |
Native-compile with Cygwin | Win32CompileCygwinNew | OUTDATED native compilation method |
Native-compile with Microsoft Visual C++ | None | Not advised.
Even though VLC includes some MSVC project files, this method is advised only if you just want to experiment/play with some basic functionality in VLC. VLC depends on a lot of third-party libraries and building them in MSVC is inconvenient (and in some cases, impossible). |
Obtaining the build tools
Each build method requires its own toolchain:
Method | Notes |
---|---|
Cross-compile with mingw32 on GNU/Linux |
|
Native-compile with MSYS+MINGW | Read the documentation |
Native-compile with Cygwin | Read the documentation |
3rd party libraries.
VLC modules requires numerous open source projects to work (like AC3 audio decoding or MPEG-4 video decoding).
If you feel you must build these libraries from source, go to extras/contrib and read the README.
If you want to save yourself a lot of time and energy, use the pre-built versions of these libraries. You may download them from http://people.videolan.org/~jb/Contribs/, named in fashion of contrib-yyyymmdd-win32-version-bin-gcc-gccversion-only.tar.bz2.
Install the pre-built libraries into the standard directories (/usr/win32/*) by using
tar jxf contrib-20061122-win32-bin-gcc-3.4.5-only.tar.bz2 -C /
(Note the "-C /"
!)
Configuring the build
First of all, ./bootstrap
.
Once you've got all the files you need in place, you need to configure the build with the ./configure
script.
Good examples can be found in some files (in git). From the vlc source base directory run:
extras/package/win32/configure-mingw.sh
for cross compiling with mingw32extras/package/win32/configure-msys.sh
for compiling with msysextras/package/win32/configure-common.sh
See './configure --help'
for more information.
Building VLC
Once configured, to build VLC, just run 'make'
.
Once the compilation is done, you can either run VLC directly from the source tree or you can build self-contained VLC packages with the following make
rules:
Command | Description |
---|---|
make package-win32-base
|
Creates a subdirectory named vlc-x.x.x with all the binaries 'stripped' (that is, smallest size, unusable with a debugger)
|
make package-win32-zip
|
Same as above but will package the directory in a zip file. |
make package-win32
|
Same as above but will also create an auto-installer package. You must have NSIS installed in its default location for this to work. |
Well done—you're ready to use VLC!