Cross Compiling FileZilla 3 for Windows under Ubuntu or Debian GNU/Linux

From FileZilla Wiki
Jump to navigationJump to search

This documentation explains how to setup a build environment for FileZilla 3 for Windows and how to compile it under Ubuntu or Debian using Mingw-w64. It will take less time and is more simple than Compiling FileZilla 3 under Windows.

OS version

Any recent Linux should do the trick. For the sake of simplicity, this guide focuses on Debian(-based) distributions.

Known-good Debian(-based) distributions:

Setting up the build environment

As root, execute:

dpkg --add-architecture i386 # If using a 64bit distribution (64bit is recommended)
apt-get update
apt-get install bzip2 ca-certificates gcc gettext lzip m4 mingw-w64 pkg-config wx-common wine wine32

If you want to work with wxWidgets and FileZilla development sources, also execute this as root:

apt-get install autoconf libtool subversion

Back as normal user, execute:

export PATH="$HOME/prefix-win32/bin:$PATH"
export CPPFLAGS="-I$HOME/prefix-win32/include"
export LDFLAGS="-L$HOME/prefix-win32/lib"
export PKG_CONFIG_PATH="$HOME/prefix-win32/lib/pkgconfig"

GMP

cd ~/src
wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz
tar xvf gmp-6.0.0a.tar.lz
cd gmp-6.0.0a
./configure --host=i686-w64-mingw32 --prefix="$HOME/prefix-win32" --disable-shared
make
make install 

Nettle

cd ~/src
wget https://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz
tar xvf nettle-2.7.1.tar.gz
cd nettle-2.7.1
./configure --host=i686-w64-mingw32 --prefix="$HOME/prefix-win32" --disable-shared
make
make install

GnuTLS

cd ~/src
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/gnutls-3.2.17.tar.lz
tar xvf gnutls-3.2.17.tar.lz
cd gnutls-3.2.17
./configure --host=i686-w64-mingw32 --prefix="$HOME/prefix-win32" --disable-shared
make
make install

Compile SQLite

cd ~/src
wget http://sqlite.org/2014/sqlite-autoconf-3080600.tar.gz
tar xvzf sqlite-autoconf-3080600.tar.gz
cd sqlite-autoconf-3080600
./configure --host=i686-w64-mingw32 --prefix="$HOME/prefix-win32" --disable-shared
make
make install

NSIS

cd ~/src
wget https://unsis.googlecode.com/files/nsis-2.46.5-Unicode-setup.exe
wine nsis-2.46.5-Unicode-setup.exe /S

The above may print a lot of errors and warnings. Ignore them, check for success this way:

[ -f "$HOME/.wine/drive_c/Program Files/NSIS/Unicode/makensis.exe" ] && echo "Success!"

Compile wxWidgets

cd ~/src
wget http://sourceforge.net/projects/wxwindows/files/3.0.1/wxWidgets-3.0.1.tar.bz2
tar xvjf wxWidgets-3.0.1.tar.bz2
cd wxWidgets-3.0.1
./configure --host=i686-w64-mingw32 --prefix="$HOME/prefix-win32" --disable-shared
make
make install

Compile FileZilla

cd ~/src
wget http://download.filezilla-project.org/client/FileZilla_3.9.0.5_src.tar.bz2
tar xvjf FileZilla_3.9.0.5_src.tar.bz2
cd filezilla-3.9.0.5
./configure --host=i686-w64-mingw32
make
cd data
wine "$HOME/.wine/drive_c/Program Files/NSIS/Unicode/makensis.exe" install.nsi

Voila, there's now FileZilla_3_setup.exe in the current directory.