There are only a few packages that need to be installed as root to get started:
- sudo apt-get install mingw-w64 wine git-core
+ sudo apt-get install mingw-w64 wine git-core quilt
sudo apt-get build-dep tinc
Other Linux distributions may also have MinGW packages, use their respective
mkdir $HOME/mingw
cd $HOME/mingw
apt-get source openssl liblzo2-dev zlib1g-dev
- git clone git://tinc-vpn.org/tinc
+ git clone https://tinc-vpn.org/git/tinc
### Making cross-compilation easy
use the MinGW version of GCC and binutils:
mkdir $HOME/bin
- cat >$HOME/bin/mingw << EOF
+ cat >$HOME/bin/mingw << 'EOF'
#!/bin/sh
PREFIX=i686-w64-mingw32
export CC=$PREFIX-gcc
Cross-compiling LZO is easy:
- cd $HOME/mingw/lzo2-2.06
+ cd $HOME/mingw/lzo2-2.08
./configure --host=i686-w64-mingw32
make
DESTDIR=$HOME/mingw make install
Cross-compiling Zlib is also easy, but a plain `make` failed to compile the
tests, so we only build the static library here:
- cd $HOME/mingw/zlib-1.2.7.dfsg
+ cd $HOME/mingw/zlib-1.2.8.dfsg
mingw ./configure
mingw make libz.a
DESTDIR=$HOME/mingw mingw make install
-### Compiling OpenSSL
+### Compiling LibreSSL
-OpenSSL 1.0.0 and later is relatively easy. However, `apt-get source` will have applied
-Debian-specific patches that break cross-compiling a Windows binary. You need to undo those patches first:
+Tinc can use either OpenSSL or LibreSSL. The latter is recommended.
- cd $HOME/mingw/openssl-1.0.1c
- quilt pop -a
-
-Now you can compile OpenSSL.
-Do not use the `-j` option when compiling OpenSSL, it will break.
-
- mingw ./Configure --openssldir=$HOME/mingw/usr/local mingw
- mingw make
- mingw make install
+ cd $HOME/mingw/libressl-2.3.3
+ CC=i686-w64-mingw32-gcc ./configure --host=i686-w64-mingw32
+ make
+ DESTDIR=$HOME/mingw make install
### Compiling tinc