FileZilla — бесплатный FTP клиент
Кросс-компиляция FileZilla 3 для Windows под Debian GNU/Linux
Этот документ объясняет, как правильно установить окружение сборки для FileZilla 3 для Windows и как компилировать его под Ubuntu или Debian используя MinGW. Это проще и займет меньше времени чем Компиляция FileZilla 3 под Windows.
Содержание
- Версия ОС
- Установка окружения сборки
- Патч mingw32-runtime (только Debian)
- Сборка библиотек
- Компиляция FileZilla 3
Версия ОС
- Ubuntu 10.04 (рекомендуется)
- Debian 5.0.3
- coLinux с Debian-5.0r2-lenny
Установка окружения сборки
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