Cross Compiling FileZilla 3 for Windows under Ubuntu or Debian GNU/Linux
From FileZilla Wiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This documentation explains how to setup a build environment for FileZilla 3 for Windows and how to compile it under 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.
We strongly recommend to use Debian 12 (Bookworkm) or later (recommended)
Setting up the build environment
As root, execute:
dpkg --add-architecture i386 apt update apt install automake autoconf libtool make gettext lzip xz-utils apt install mingw-w64 pkg-config wx-common wine wine64 wine32 wine-binfmt subversion git
Back as normal user, execute:
mkdir ~/prefix mkdir ~/src export PATH="$HOME/prefix/bin:$PATH" export LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH" export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig:$PKG_CONFIG_PATH" export TARGET_HOST=x86_64-w64-mingw32
wine reg add HKCU\\Environment /f /v PATH /d "`x86_64-w64-mingw32-g++ -print-search-dirs | grep ^libraries | sed 's/^libraries: =//' | sed 's/:/;z:/g' | sed 's/^\\//z:\\\\\\\\/' | sed 's/\\//\\\\/g'`"
GMP
cd ~/src wget https://gmplib.org/download/gmp/gmp-6.3.0.tar.lz tar xf gmp-6.3.0.tar.lz cd gmp-6.3.0 CC_FOR_BUILD=gcc ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --disable-static --enable-shared --enable-fat make make install
Nettle
cd ~/src wget https://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz tar xf nettle-3.9.1.tar.gz cd nettle-3.9.1 ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat make make install
GnuTLS
cd ~/src wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/gnutls-3.8.1.tar.xz tar xvf gnutls-3.8.1.tar.xz cd gnutls-3.8.1 ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static --without-p11-kit --with-included-libtasn1 --with-included-unistring --disable-srp-authentication --disable-dtls-srtp-support --disable-heartbeat-support --disable-psk-authentication --disable-anon-authentication --disable-openssl-compatibility --without-tpm --without-brotli --disable-cxx --disable-doc --enable-threads=windows --disable-tools make make install
Compile SQLite
cd ~/src wget https://sqlite.org/2018/sqlite-autoconf-32600-00.tar.gz tar xvzf sqlite-autoconf-3260000.tar.gz cd sqlite-autoconf-3260000 ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static --disable-dynamic-extensions make make install
NSIS
cd ~/src wget https://prdownloads.sourceforge.net/nsis/nsis-3.09-setup.exe wine nsis-3.09-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/makensis.exe" ] && echo "Success!"
Compile wxWidgets
cd ~/src git clone --branch WX_3_0_BRANCH --single-branch https://github.com/wxWidgets/wxWidgets.git wx3 cd wx3 ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static make make install cp $HOME/prefix/lib/wx*.dll $HOME/prefix/bin
Compile libfilezilla
cd ~/src svn co https://svn.filezilla-project.org/svn/libfilezilla/tags/0.33.0 lfz cd lfz autoreconf -i ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static make make install
Compile FileZilla
cd ~/src svn co https://svn.filezilla-project.org/svn/FileZilla3/tags/3.56.0/ fz cd fz autoreconf -i ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static --with-pugixml=builtin make # strip debug symbols $TARGET_HOST-strip src/interface/.libs/filezilla.exe $TARGET_HOST-strip src/putty/.libs/fzsftp.exe $TARGET_HOST-strip src/putty/.libs/fzputtygen.exe $TARGET_HOST-strip src/fzshellext/64/.libs/libfzshellext-0.dll $TARGET_HOST-strip src/fzshellext/32/.libs/libfzshellext-0.dll $TARGET_HOST-strip data/dlls/*.dll cd data wine "$HOME/.wine/drive_c/Program Files/NSIS/makensis.exe" install.nsi
Voila, there's now FileZilla_3_setup.exe in the current directory.