Difference between revisions of "Cross Compiling FileZilla 3 for Windows under Ubuntu or Debian GNU/Linux"
From FileZilla Wiki
Jump to navigationJump to search (→GnuTLS) |
|||
(8 intermediate revisions by 3 users not shown) | |||
Line 5: | Line 5: | ||
Any recent Linux should do the trick. For the sake of simplicity, this guide focuses on Debian(-based) distributions. | Any recent Linux should do the trick. For the sake of simplicity, this guide focuses on Debian(-based) distributions. | ||
− | We | + | We strongly recommend to use [http://debian.org Debian '''10''' (Buster)] or later ('''recommended''') |
− | + | == Setting up the build environment == | |
+ | |||
+ | As root, execute: | ||
dpkg --add-architecture i386 | dpkg --add-architecture i386 | ||
apt update | apt update | ||
apt install automake autoconf libtool make gettext lzip | apt install automake autoconf libtool make gettext lzip | ||
− | apt install mingw-w64 pkg-config wx-common wine wine32 subversion git | + | apt install mingw-w64 pkg-config wx-common wine wine32 wine-binfmt subversion git |
Back as normal user, execute: | Back as normal user, execute: | ||
Line 21: | Line 23: | ||
export TARGET_HOST=x86_64-w64-mingw32 | 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'`" | ||
<!-- | <!-- | ||
Line 49: | Line 52: | ||
tar xf nettle-3.4.1.tar.gz | tar xf nettle-3.4.1.tar.gz | ||
cd nettle-3.4.1 | cd nettle-3.4.1 | ||
− | ./configure --host=$TARGET_HOST --prefix="$HOME/prefix | + | ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat LDFLAGS="-L$HOME/prefix/lib" CPPFLAGS="-I$HOME/prefix/include" |
make | make | ||
make install | make install | ||
Line 56: | Line 59: | ||
cd ~/src | cd ~/src | ||
− | wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6. | + | wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.8.tar.xz |
− | tar xvf gnutls-3.6. | + | tar xvf gnutls-3.6.8.tar.xz |
− | cd gnutls-3.6. | + | cd gnutls-3.6.8 |
− | ./configure --host=$TARGET_HOST | + | ./configure --host=$TARGET_HOST --enable-shared --disable-static --without-p11-kit --with-included-libtasn1 --with-included-unistring --enable-local-libopts --disable-srp-authentication --disable-dtls-srtp-support --disable-heartbeat-support --disable-psk-authentication --disable-anon-authentication --disable-openssl-compatibility --without-tpm --disable-cxx |
make | make | ||
make install | make install | ||
Line 76: | Line 79: | ||
cd ~/src | cd ~/src | ||
− | wget https://prdownloads.sourceforge.net/nsis/nsis-3. | + | wget https://prdownloads.sourceforge.net/nsis/nsis-3.04-setup.exe |
− | wine nsis-3. | + | wine nsis-3.04-setup.exe /S |
The above may print a lot of errors and warnings. Ignore them, check for success this way: | The above may print a lot of errors and warnings. Ignore them, check for success this way: |
Revision as of 10:04, 19 June 2019
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 10 (Buster) 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 apt install mingw-w64 pkg-config wx-common wine 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.1.2.tar.lz tar xf gmp-6.1.2.tar.lz cd gmp-6.1.2 ./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.4.1.tar.gz tar xf nettle-3.4.1.tar.gz cd nettle-3.4.1 ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat LDFLAGS="-L$HOME/prefix/lib" CPPFLAGS="-I$HOME/prefix/include" make make install
GnuTLS
cd ~/src wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.8.tar.xz tar xvf gnutls-3.6.8.tar.xz cd gnutls-3.6.8 ./configure --host=$TARGET_HOST --enable-shared --disable-static --without-p11-kit --with-included-libtasn1 --with-included-unistring --enable-local-libopts --disable-srp-authentication --disable-dtls-srtp-support --disable-heartbeat-support --disable-psk-authentication --disable-anon-authentication --disable-openssl-compatibility --without-tpm --disable-cxx 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.04-setup.exe wine nsis-3.04-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
Compile libfilezilla
cd ~/src svn co https://svn.filezilla-project.org/svn/libfilezilla/tags/0.15.1 lfz cd lfz autoreconf -i ./configure --host=$TARGET_HOST --prefix="$HOME/prefix" --enable-shared --disable-static make make install cp $HOME/prefix/lib/wx*.dll $HOME/prefix/bin
Compile FileZilla
cd ~/src svn co https://svn.filezilla-project.org/svn/FileZilla3/tags/3.40.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.