Cross Compiling FileZilla 3 for Windows under Ubuntu or Debian GNU/Linux
From FileZilla Wiki
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:
- Debian 8 (Jessie) or later (recommended)
- Ubuntu 14.04 LTS or later
Setting up the build environment
As root, execute:
dpkg --add-architecture i386 # If using a 64bit distribution (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="-L$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.