Difference between revisions of "Cross Compiling FileZilla 3 for Windows under Ubuntu or Debian GNU/Linux"
(ZAWcXaBTrcwMEGueWGv) |
m (Reverted edits by 201.85.50.148 (talk) to last revision by CodeSquid) |
||
Line 1: | Line 1: | ||
− | + | This documentation explains how to setup a build environment for [[FileZilla 3]] '''for Windows''' and how to compile it under [http://ubuntu.com Ubuntu] or [http://debian.org Debian] using [http://www.mingw.org/ MinGW]. It will take less time and simple than [[Compiling FileZilla 3 under Windows]]. | |
+ | |||
+ | == OS version == | ||
+ | * [http://ubuntu.com Ubuntu] 10.04 ('''recommended''') | ||
+ | * [http://debian.org Debian] 5.0.3 | ||
+ | * [http://colinux.org coLinux] with [http://sourceforge.net/projects/colinux/files/Images%202.6.x%20Debian/Debian%205.0%20Lenny/Debian-5.0r2-lenny.7z/download Debian-5.0r2-lenny] | ||
+ | |||
+ | == Setting up the build environment == | ||
+ | |||
+ | === Ubuntu === | ||
+ | |||
+ | Required packages | ||
+ | sudo apt-get install -y mingw32 make g++ libtool bzip2 automake gettext wx-common | ||
+ | |||
+ | === Debian === | ||
+ | |||
+ | Do works as root | ||
+ | su - | ||
+ | |||
+ | Required packages | ||
+ | apt-get install -y mingw32 make g++ libtool bzip2 automake gettext wx-common | ||
+ | |||
+ | == Patch mingw32-runtime (only Debian) == | ||
+ | |||
+ | If you are using Ubuntu, go to the next [[#Make libraries]] section. In Ubuntu, the patch is applied. | ||
+ | |||
+ | Because the version of mingw32-runtime in Debian 5 is [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=452977 broken] - Thanks [[CodeSquid]], patch mingw32-runtime package. | ||
+ | |||
+ | === Get source package === | ||
+ | cd /tmp | ||
+ | apt-get install dpkg-dev debhelper | ||
+ | apt-get source mingw32-runtime | ||
+ | cd mingw32-runtime-3.13/ | ||
+ | debian/rules unpack-stamp | ||
+ | |||
+ | === Patch snprintf bug === | ||
+ | pushd build_dir/src/mingw-runtime-3.13-20070825-1/mingwex/gdtoa/ | ||
+ | diff -u mingw_snprintf.c.org mingw_snprintf.c | ||
+ | --- mingw_snprintf.c.org 2009-09-21 02:41:31.000000000 +0000 | ||
+ | +++ mingw_snprintf.c 2009-09-21 02:41:54.000000000 +0000 | ||
+ | @@ -465,7 +465,7 @@ | ||
+ | len = LEN_LL; | ||
+ | } | ||
+ | else | ||
+ | - len = LEN_LL; | ||
+ | + len = LEN_L; | ||
+ | goto fmtloop; | ||
+ | case 'L': | ||
+ | flag_ld++; | ||
+ | @@ -617,6 +617,7 @@ | ||
+ | break; | ||
+ | case LEN_S: | ||
+ | *(short*)ip = c; | ||
+ | + break; | ||
+ | case LEN_LL: | ||
+ | *(long long*) ip = c; | ||
+ | break; | ||
+ | popd | ||
+ | |||
+ | === Build & Install === | ||
+ | debian/rules build | ||
+ | debian/rules install | ||
+ | |||
+ | === Copy new library === | ||
+ | mv $/usr/i586-mingw32msvc/lib/libmingwex.a $/usr/i586-mingw32msvc/lib/libmingwex.a.old | ||
+ | cp debian/mingw32-runtime/usr/i586-mingw32msvc/lib/libmingwex.a $/usr/i586-mingw32msvc/lib/ | ||
+ | |||
+ | == Make libraries == | ||
+ | Do works as normal user in Debian. | ||
+ | exit | ||
+ | |||
+ | === Make working & install directory === | ||
+ | Check available space of storage. | ||
+ | mkdir ~/mingw32 | ||
+ | mkdir /tmp/fz3 | ||
+ | cd /tmp/fz3 | ||
+ | |||
+ | === Setting up environment variables === | ||
+ | export CFGPRE=~/mingw32 | ||
+ | export CFGOPT="--prefix=$CFGPRE --host=i586-mingw32msvc --disable-shared --enable-static" | ||
+ | |||
+ | === iconv === | ||
+ | wget ftp://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz | ||
+ | tar zxvf libiconv-1.14.tar.gz | ||
+ | cd libiconv-1.14 | ||
+ | ./configure $CFGOPT | ||
+ | make install clean | ||
+ | cd .. | ||
+ | |||
+ | === libidn === | ||
+ | wget ftp://alpha.gnu.org/gnu/libidn/libidn2-0.8.tar.gz | ||
+ | tar zxvf libidn2-0.8.tar.gz | ||
+ | cd libidn2-0.8 | ||
+ | ./configure $CFGOPT | ||
+ | make install clean | ||
+ | cd .. | ||
+ | |||
+ | === libgpg-error === | ||
+ | wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2 | ||
+ | tar jxvf libgpg-error-1.10.tar.bz2 | ||
+ | cd libgpg-error-1.10 | ||
+ | ./configure $CFGOPT --disable-nls | ||
+ | make install clean | ||
+ | cd .. | ||
+ | |||
+ | === libgcrypt === | ||
+ | wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2 | ||
+ | tar jxvf libgcrypt-1.5.0.tar.bz2 | ||
+ | cd libgcrypt-1.5.0 | ||
+ | ./configure $CFGOPT --disable-nls --disable-asm --with-gpg-error-prefix=$CFGPRE | ||
+ | make install clean | ||
+ | cd .. | ||
+ | |||
+ | === GnuTLS === | ||
+ | wget ftp://ftp.gnu.org/pub/gnu/gnutls/gnutls-3.0.19.tar.xz | ||
+ | tar Jxvf gnutls-3.0.19.tar.xz | ||
+ | cd gnutls-3.0.19 | ||
+ | ./configure $CFGOPT --disable-nls --disable-cxx --disable-guile --with-libgcrypt-prefix=$CFGPRE | ||
+ | make install clean | ||
+ | cd .. | ||
+ | |||
+ | === wxWidgets === | ||
+ | wget http://downloads.sourceforge.net/wxwindows/wxWidgets-2.8.12.tar.bz2 | ||
+ | tar jxvf wxWidgets-2.8.12.tar.bz2 | ||
+ | cd wxWidgets-2.8.12 | ||
+ | mkdir compile | ||
+ | cd compile | ||
+ | ../configure $CFGOPT --enable-unicode | ||
+ | make install clean | ||
+ | cd ../.. | ||
+ | |||
+ | == Compiling FileZilla 3 == | ||
+ | wget http://downloads.sourceforge.net/filezilla/FileZilla_3.5.3_src.tar.bz2 | ||
+ | tar jxvf FileZilla_3.5.3_src.tar.bz2 | ||
+ | |||
+ | cd filezilla-3.5.3 | ||
+ | ./autogen.sh | ||
+ | |||
+ | mkdir compile | ||
+ | cd compile | ||
+ | |||
+ | autogen.sh of FileZilla 3 use old libgnutls-config. GnuTLS does not use libgnutls-config anymore. | ||
+ | |||
+ | Dowload http://filezilla-project.org/codesquid/libgnutls-config to $CFGPRE/bin. Edit prefix value. | ||
+ | |||
+ | wget -O $CFGPRE/bin/libgnutls-config http://filezilla-project.org/codesquid/libgnutls-config | ||
+ | |||
+ | echo $CFGPRE | ||
+ | /home/fz/mingw32 # remember the path | ||
+ | |||
+ | vi $CFGPRE/bin/libgnutls-config | ||
+ | prefix=/home/fz/mingw32 # edit this line. | ||
+ | |||
+ | chmod +x $CFGPRE/bin/libgnutls-config | ||
+ | |||
+ | Configure and builld. | ||
+ | |||
+ | CFLAGS="-I$CFGPRE/include" CXXFLAGS="-I$CFGPRE/include" LDFLAGS="-L$CFGPRE/lib" ../configure $CFGOPT --with-wx-prefix=$CFGPRE --with-libgnutls-prefix=$CFGPRE | ||
+ | |||
+ | make | ||
+ | strip src/interface/filezilla.exe |
Revision as of 11:56, 3 March 2013
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. It will take less time and simple than Compiling FileZilla 3 under Windows.
OS version
- Ubuntu 10.04 (recommended)
- Debian 5.0.3
- coLinux with Debian-5.0r2-lenny
Setting up the build environment
Ubuntu
Required packages
sudo apt-get install -y mingw32 make g++ libtool bzip2 automake gettext wx-common
Debian
Do works as root
su -
Required packages
apt-get install -y mingw32 make g++ libtool bzip2 automake gettext wx-common
Patch mingw32-runtime (only Debian)
If you are using Ubuntu, go to the next #Make libraries section. In Ubuntu, the patch is applied.
Because the version of mingw32-runtime in Debian 5 is broken - Thanks CodeSquid, patch mingw32-runtime package.
Get source package
cd /tmp apt-get install dpkg-dev debhelper apt-get source mingw32-runtime cd mingw32-runtime-3.13/ debian/rules unpack-stamp
Patch snprintf bug
pushd build_dir/src/mingw-runtime-3.13-20070825-1/mingwex/gdtoa/ diff -u mingw_snprintf.c.org mingw_snprintf.c --- mingw_snprintf.c.org 2009-09-21 02:41:31.000000000 +0000 +++ mingw_snprintf.c 2009-09-21 02:41:54.000000000 +0000 @@ -465,7 +465,7 @@ len = LEN_LL; } else - len = LEN_LL; + len = LEN_L; goto fmtloop; case 'L': flag_ld++; @@ -617,6 +617,7 @@ break; case LEN_S: *(short*)ip = c; + break; case LEN_LL: *(long long*) ip = c; break; popd
Build & Install
debian/rules build debian/rules install
Copy new library
mv $/usr/i586-mingw32msvc/lib/libmingwex.a $/usr/i586-mingw32msvc/lib/libmingwex.a.old cp debian/mingw32-runtime/usr/i586-mingw32msvc/lib/libmingwex.a $/usr/i586-mingw32msvc/lib/
Make libraries
Do works as normal user in Debian.
exit
Make working & install directory
Check available space of storage.
mkdir ~/mingw32 mkdir /tmp/fz3 cd /tmp/fz3
Setting up environment variables
export CFGPRE=~/mingw32 export CFGOPT="--prefix=$CFGPRE --host=i586-mingw32msvc --disable-shared --enable-static"
iconv
wget ftp://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz tar zxvf libiconv-1.14.tar.gz cd libiconv-1.14 ./configure $CFGOPT make install clean cd ..
libidn
wget ftp://alpha.gnu.org/gnu/libidn/libidn2-0.8.tar.gz tar zxvf libidn2-0.8.tar.gz cd libidn2-0.8 ./configure $CFGOPT make install clean cd ..
libgpg-error
wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2 tar jxvf libgpg-error-1.10.tar.bz2 cd libgpg-error-1.10 ./configure $CFGOPT --disable-nls make install clean cd ..
libgcrypt
wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2 tar jxvf libgcrypt-1.5.0.tar.bz2 cd libgcrypt-1.5.0 ./configure $CFGOPT --disable-nls --disable-asm --with-gpg-error-prefix=$CFGPRE make install clean cd ..
GnuTLS
wget ftp://ftp.gnu.org/pub/gnu/gnutls/gnutls-3.0.19.tar.xz tar Jxvf gnutls-3.0.19.tar.xz cd gnutls-3.0.19 ./configure $CFGOPT --disable-nls --disable-cxx --disable-guile --with-libgcrypt-prefix=$CFGPRE make install clean cd ..
wxWidgets
wget http://downloads.sourceforge.net/wxwindows/wxWidgets-2.8.12.tar.bz2 tar jxvf wxWidgets-2.8.12.tar.bz2 cd wxWidgets-2.8.12 mkdir compile cd compile ../configure $CFGOPT --enable-unicode make install clean cd ../..
Compiling FileZilla 3
wget http://downloads.sourceforge.net/filezilla/FileZilla_3.5.3_src.tar.bz2 tar jxvf FileZilla_3.5.3_src.tar.bz2 cd filezilla-3.5.3 ./autogen.sh
mkdir compile cd compile
autogen.sh of FileZilla 3 use old libgnutls-config. GnuTLS does not use libgnutls-config anymore.
Dowload http://filezilla-project.org/codesquid/libgnutls-config to $CFGPRE/bin. Edit prefix value.
wget -O $CFGPRE/bin/libgnutls-config http://filezilla-project.org/codesquid/libgnutls-config echo $CFGPRE /home/fz/mingw32 # remember the path vi $CFGPRE/bin/libgnutls-config prefix=/home/fz/mingw32 # edit this line. chmod +x $CFGPRE/bin/libgnutls-config
Configure and builld.
CFLAGS="-I$CFGPRE/include" CXXFLAGS="-I$CFGPRE/include" LDFLAGS="-L$CFGPRE/lib" ../configure $CFGOPT --with-wx-prefix=$CFGPRE --with-libgnutls-prefix=$CFGPRE make strip src/interface/filezilla.exe