Кросс-компиляция FileZilla 3 для Windows под Debian GNU/Linux

Этот документ объясняет, как правильно установить окружение сборки для FileZilla 3 для Windows и как компилировать его под Ubuntu или Debian используя MinGW. Это проще и займет меньше времени чем Компиляция FileZilla 3 под Windows.

Содержание

Версия ОС

Установка окружения сборки

Ubuntu

Сборка зависимостей

sudo apt-get install -y mingw32 make g++ libtool bzip2 automake gettext wx-common

Debian

Нужны права root

su -

Сборка зависимостей

apt-get install -y mingw32 make g++ libtool bzip2 automake gettext wx-common

Патч mingw32-runtime (только Debian)

Если вы используете Ubuntu, обратитесь в раздел #Сборка библиотек. В Ubuntu, патч уже стоит.

Так как версия mingw32-runtime в Debian 5 не работает

Исходный дистрибутив

cd /tmp
apt-get install dpkg-dev debhelper
apt-get source mingw32-runtime
cd mingw32-runtime-3.13/
debian/rules unpack-stamp

Патч snprintf

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

Сборка и установка

debian/rules build
debian/rules install

Копирование новой библотеки

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/

Сборка библиотек


Войдите как обычный пользователь в Debian.

exit

Проверка работоспособности и каталог установки

Проверьте объем свободного места.

mkdir ~/mingw32
mkdir /tmp/fz3
cd /tmp/fz3

Настройка переменной среды

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 ../..

Компиляция 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 в FileZilla 3 использует старый libgnutls-config. GnuTLS больше не использует libgnutls-config.

Загрузите libgnutls-config в $CFGPRE/bin. Измените значения префикса.

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

Конфигурация и сборка.

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