Компиляция FileZilla 3 под Windows
Этот документ описывает, как правильно установить окружение сборки для FileZilla 3 и как компилировать его под Windows используя MinGW. Установка может занять некоторое время, но вы сможете использовать окружение сборки и для других программ.
Для этой инструкции мы обозначим c:\dev как корневой каталог, в который мы будем все устанавливать.
Содержание
- Установка окружения сборки
- Установка wxWidgets
- 3Установка NSIS
- Установка Subversion
- Компиляция FileZilla 3
- Проблемы с установкой
Установка окружения сборки
Сюда входит компилятор и набор инструментов необходимый для сборки FileZilla 3 и нужных зависимостей. Для всех дистрибутивов, что вы загрузили, вам понадобится загрузить двоичную версию, а не исходную.
MinGW
Загрузите файлы:
- http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.5.0-1/gcc-c%2B%2B-4.5.0-1-mingw32-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.5.0-1/gcc-core-4.5.0-1-mingw32-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.5.0-1/libgcc-4.5.0-1-mingw32-dll-1.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.5.0-1/libstdc%2B%2B-4.5.0-1-mingw32-dll-6.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MinGW/Extension/gdb/GDB-7.1/gdb-7.1-2-mingw32-bin.tar.gz/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/binutils/binutils-2.20.51/binutils-2.20.51-1-mingw32-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/mingw-rt/mingwrt-3.18/mingwrt-3.18-mingw32-dev.tar.gz/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/mingw-rt/mingwrt-3.18/mingwrt-3.18-mingw32-dll.tar.gz/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/w32api/w32api-3.14/w32api-3.14-mingw32-dev.tar.gz/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/libgmp-5.0.1-1-mingw32-dll-10.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/libmpc-0.8.1-1-mingw32-dll-2.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.8.0-3/libpthread-2.8.0-3-mingw32-dll-2.tar.lzma/download
Извлеките содержимое всех tar-архивов в c:\dev\mingw. Для этого можно использовать файловый архиватор 7-Zip.
MSYS
Загрузите файлы:
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/autoconf/autoconf-2.65-1/autoconf-2.65-1-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/automake/automake-1.11.1-1/automake-1.11.1-1-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/bash/bash-3.1.17-3/bash-3.1.17-3-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/bzip2/bzip2-1.0.5-2/bzip2-1.0.5-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/bzip2/bzip2-1.0.5-2/libbz2-1.0.5-2-msys-1.0.13-dll-1.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/coreutils/coreutils-5.97-3/coreutils-5.97-3-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/gawk/gawk-3.1.7-2/gawk-3.1.7-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/gettext/gettext-0.17-2/gettext-0.17-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/gettext/gettext-0.17-2/gettext-0.17-2-msys-1.0.13-dev.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/gettext/gettext-0.17-2/libgettextpo-0.17-2-msys-dll-0.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/gettext/gettext-0.17-2/libintl-0.17-2-msys-dll-8.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/grep/grep-2.5.4-2/grep-2.5.4-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/gzip/gzip-1.3.12-2/gzip-1.3.12-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/libiconv/libiconv-1.13.1-2/libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.15-1/msysCORE-1.0.15-1-msys-1.0.15-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.15-1/msysCORE-1.0.15-1-msys-1.0.15-dev.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.15-1/msysCORE-1.0.15-1-msys-1.0.15-ext.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/regex/regex-1.20090805-2/libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/sed/sed-4.2.1-2/sed-4.2.1-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/tar/tar-1.23-1/tar-1.23-1-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/termcap/termcap-0.20050421_1-2/libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/termcap/termcap-0.20050421_1-2/termcap-0.20050421_1-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/crypt/crypt-1.1_1-3/libcrypt-1.1_1-3-msys-1.0.13-dll-0.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/expat/expat-2.0.1-1/libexpat-2.0.1-1-msys-1.0.13-dll-1.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/findutils/findutils-4.4.2-2/findutils-4.4.2-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/libtool/libtool-2.2.7a-2/libltdl-2.2.7a-2-msys-1.0.13-dev.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/libtool/libtool-2.2.7a-2/libltdl-2.2.7a-2-msys-1.0.13-dll-7.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/msysdev/libtool/libtool-2.2.7a-2/libtool-2.2.7a-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/m4/m4-1.4.14-1/m4-1.4.14-1-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Base/make/make-3.81-3/make-3.81-3-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/patch/patch-2.6.1-1/patch-2.6.1-1-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/perl/perl-5.6.1_2-2/perl-5.6.1_2-2-msys-1.0.13-bin.tar.lzma/download
- http://sourceforge.net/projects/mingw/files/MSYS/Extension/rxvt/rxvt-2.7.2-3/rxvt-2.7.2-3-msys-1.0.14-bin.tar.lzma/download
Извлеките содержимое всех tar-архивов в c:\dev\msys
Запустите c:\dev\msys\postinstall\pi.bat и тщательно ответьте на все вопросы. Важно: Не пропускайте вопросы через enter.
Compilation flags
Запустите msys из c:\dev\msys\msys.bat и введите команды:
echo "export LDFLAGS=-L/local/lib" > ~/.profile echo "export CPPFLAGS=-I/local/include" >> ~/.profile exit
Лучше несколько раз проверить то что вы ввели. Это сэкономит вам несколько часов неприятного ожидания. Если вы допустили опечатку на этом этапе, все будет работать пока вы не начнете компилировать FileZilla.
Libidn
Загрузите ftp://ftp.gnu.org/gnu/libidn/libidn-1.22.tar.gz в c:\dev\download. Наберите в msys:
mkdir /usr/src cd /usr/src tar -xvzf /c/dev/download/libidn-1.22.tar.gz cd libidn-1.22 mkdir compile cd compile ../configure --disable-shared --enable-static --disable-nls --prefix=/c/dev/mingw make -j3 make install
Если проверка gcc bound продолжается несколько часов, отмените её и попробуйте:
../configure --disable-shared -enable-static --disable-nls CFLAGS=-m32
Это установит 64 bit параметры для 32 bit. Вы можете применять параметр "CFLAGS=-32" и для других установок.
Libgpg-error
Загрузите ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.8.tar.bz2 в c:\dev\download. Наберите в msys:
cd /usr/src tar -xvjf /c/dev/download/libgpg-error-1.8.tar.bz2 cd libgpg-error-1.8 ./configure --disable-shared --enable-static --disable-nls --prefix=/c/dev/mingw make -j3 make install
Libgcrypt
Загрузите ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.4.6.tar.bz2 в c:\dev\download. Наберите в msys:
cd /usr/src tar -xvjf /c/dev/download/libgcrypt-1.4.6.tar.bz2 cd libgcrypt-1.4.6 ./configure --disable-shared --enable-static --disable-nls make make install
GnuTLS
Загрузите ftp://ftp.gnu.org/pub/gnu/gnutls/gnutls-2.8.6.tar.bz2 и http://filezilla-project.org/codesquid/libgnutls-config в c:\dev\download. Наберите в msys:
cd /usr/src tar -xvjf /c/dev/download/gnutls-2.8.6.tar.bz2 cd gnutls-2.8.6 ./configure --disable-shared --enable-static --disable-nls --disable-cxx --disable-guile make make install cp /c/dev/download/libgnutls-config /local/bin/libgnutls-config
SQLite
Загрузите http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz в c:\dev\download. Наберите в msys:
cd /usr/src tar -xvzf /c/dev/download/sqlite-autoconf-3070603.tar.gz cd sqlite-autoconf-3070603 ./configure --disable-shared --enable-static make make install
Очистка
cd / rm -rf /usr/src
Если вы успешно установили окружение сборки, то можно начинать компилировать FileZilla 3. Единственная зависимость, которой не хватает, это wxWidgets. Её установка описана ниже.
Установка wxWidgets
Загрузка
Загрузите последнюю версию wxWidgets с http://www.wxwidgets.org
Установка
Возможно, wxWidgets будет часто обновляться. Поэтому установите его в отдельный префикс:
mkdir -p /opt/wxWidgets mkdir ~/source cd ~/source tar -xvjf /c/dev/download/wxWidgets-2.8.12.tar.bz2 cd wxWidgets-2.8.12 mkdir compile cd compile ../configure --prefix=/opt/wxWidgets --enable-unicode --disable-shared make make install
Примечание: Если вы хотите запустить FZ3 на Windows ME или более старых версиях Windows, то вы должны заменить --enable-unicode на --disable-unicode. Однако нет никакой гарантии, что FileZilla будет работать правильно без поддержки unicode.
Настройка переменной среды
Наберите в msys:
echo 'export PATH="$PATH:/opt/wxWidgets/bin"' >> ~/.profile echo 'export LD_LIBRARY_PATH=/opt/wxWidgets/lib' >> ~/.profile source ~/.profile
Это завершит установку wxWidgets. Теперь нужно установить NSIS.
Установка NSIS
Загрузите и установите Unicode NSIS с http://www.scratchpaper.com
Убедитесь, что вы установили Unicode версию, а не Ansi.
Установка Subversion
Загрузите http://subversion.tigris.org/downloads/1.4.5-win32/apache-2.0/svn-win32-1.4.5.zip
Используя Explorer, извлеките архивы в c:\dev\download
Скопируйте содержимое c:\dev\download\svn-win32-1.4.5 в c:\dev\msys
Используйте следующую команду в msys чтобы проверить работоспособность:
svn --version
Компиляция FileZilla 3
Загрузка FZ3 из SVN
Наберите в msys:
cd ~/source svn co https://svn.filezilla-project.org/svn/FileZilla3/trunkFileZilla3
Генерирование configure
Наберите в msys:
cd FileZilla3 ./autogen.sh
Компиляция FileZilla 3
Наберите в msys:
mkdir compile cd compile ../configure --prefix=/opt/FileZilla3 --with-tinyxml=builtin make make install
Получившийся в результате exe-файл будет иметь достаточно большой размер из-за информации об отладке. Вы можете очистить информацию об отладке через команду strip:
strip src/interface/.libs/filezilla.exe strip src/putty/.libs/fzsftp.exe strip src/putty/.libs/fzputtygen.exe strip src/fzshellext/.libs/libfzshellext-0.dll
Вы можете запускать exe-файл из /opt/FileZilla3 без установки. Если вы хотите использовать этот exe-файл, вам будет необходимо копировать/перемещать его со всем содержимым папки. Если вы хотите собрать инсталлятор, используйте NSIS.
Генерирование инсталлятора
Кликните правой кнопкой мыши на compile/data/install.nsi в Explorer используя "Compile NSIS Script" из контекстного меню.
Проблемы с установкой
Если у вас возникли проблемы, убедитесь, что вы следовали всем пунктам поочередно. Для более конкретных вопросов вы можете воспользоваться форумом FileZilla forum.
Ошибка при компиляции Libidn
Если вы получаете ошибку при компиляции libidn (например когда запускаете "make -j3") в которой сказано:
make[1]: ***No rule to make target `gl/libgnu.la', needed by `libidn.la'. Stop.
, вместо запуска "make install," наберите в msys:
make clean cd gl make cd .. make -j3 make install