Компиляция FileZilla 3 под Mac OS X
Этот документ описывает, как правильно установить окружение сборки для FileZilla 3 и как компилировать его под Mac OS X используя Xcode. Этот способ был протестирован под Tiger и под Leopard на Intel Mac. Другие версии Mac OS могут быть несовместимы с этими указаниями.
На этой странице указана более детальная информация о процессе сборки на Tiger, а также даны некоторые авто-собирающиеся файлы.
Содержание
- Автоматическая сборка через Fink
- Установка окружения сборки
- Сборка зависимостей
- Сборка FileZilla 3
- Проблемы с установкой
- Сборка под Snow Leopard 10.6
Автоматическая сборка через Fink
Для упрощения процесса сборки можно использовать Fink
Преимущества Fink
- работает под Tiger и Leopard на Intel и PPC
- все необходимые зависимости загружаются, собираются и устанавливаются автоматически одной командой
- не конфликтует с системным, или сторонним программным обеспечением от третих лиц
- при выходе новой версии FileZilla, пресобирается и обновляется автоматически
Недостатки Fink
- запакованные версии FileZilla могут иногда выдавать ошибку после выхода нового обновления
- процесс сборки не очень хорошо поддается настройке под пользователя
Инструкция
- Установить Fink с помощью User's Guide.
- Разрешить "unstable" ветку следуя FAQ.
- Запустить
fink install filezilla
с окна консоли
Как только установка будет завершена, в папке с приложениями появится иконка FileZilla.
Установка окружения сборки
Сюда входит компилятор и набор инструментов необходимый для сборки FileZilla 3 и нужных зависимостей.
Xcode
Вам понадобится загрузить последнюю версию Xcode соответствующую вашей версии OS X.
- Xcode 2.5 для Tiger
- Xcode 3.2.6 для Leopard и Snow Leopard
- Xcode 4 для Lion можно найти на App Store
Если вы используете Xcode 2.5, то убедитесь что все опции в "Command Line Support" установлены правильно. В Xcode 3, это необязательно.
Сборка зависимостей
FileZilla зависит от нескольких open-source проектов. Перед сборкой FileZilla необходимо сначала собрать их.
Сборка зависимостей может занять длительное время. Вместо того чтобы ждать до окончания сборки каждого проекта отдельно, можно открыть дополнительные консоли для каждого и запустить их все одновременно. Тем не менее, у вас должно быть собрано libgpg-error до libgcrypt, и libgcrypt до GNU TLS.
Если у вас стоит многоядерный процессор, сборку можно ускорить, если заменить "nice make" на "nice make -jN" где N соответствует количеству ядер +1 (два ядра: N = 3).
wxWidgets
Загрузите wxWidgets. Нужна версия 2.8.9 или новее. Текущая версия для Mac wxMac-2.8.12.tar.gz.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xzf ~/Desktop/wxMac-2.8.12.tar.gz cd wxMac-2.8.12 mkdir build-wx cd build-wx ../configure --disable-compat26 --enable-unicode \ --prefix $HOME/filezilla/wxMac && nice make && make install
GNU gettext
Загрузите GNU gettext. Текущая версия gettext-0.18.1.1.tar.gz.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xzf ~/Desktop/gettext-0.18.1.1.tar.gz cd gettext-0.18.1.1 ./configure --prefix $HOME/filezilla/gettext && nice make && make install
pkg-config
Загрузите pkg-config. Вам будет нужна версия 0.23 или новее. Текущая версия pkg-config-0.25.tar.gz.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xzf ~/Desktop/pkg-config-0.25.tar.gz cd pkg-config-0.25 ./configure --prefix $HOME/filezilla/pkg-config && nice make && make install
Замечание: Мне не удалось собрать pkg-config 0.26. Похоже, что он зависит от более старой версии. Лучше пока использовать 0.25.
GNU libidn
Загрузите GNU libidn. Текущая версия libidn-1.22.tar.gz.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xzf ~/Desktop/libidn-1.22.tar.gz cd libidn-1.22 ./configure --prefix $HOME/filezilla/libidn && nice make && make install
libgpg-error
Загрузите libgpg-error. Текущая версия libgpg-error-1.10.tar.bz2.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xjf ~/Desktop/libgpg-error-1.10.tar.bz2 cd libgpg-error-1.10 ./configure --prefix $HOME/filezilla/libgpg-error && nice make && make install
libgcrypt
Загрузите libgcrypt. Текущая версия libgcrypt-1.5.0.tar.bz2.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xjf ~/Desktop/libgcrypt-1.5.0.tar.bz2 cd libgcrypt-1.5.0 ./configure --prefix $HOME/filezilla/libgcrypt \ --with-gpg-error-prefix=$HOME/filezilla/libgpg-error && nice make && make install
GNU TLS
Загрузите GNU TLS. Текущая версия gnutls-2.12.6.1.tar.bz2.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xjf ~/Desktop/gnutls-2.12.6.1.tar.bz2 cd gnutls-2.12.6.1 ./configure --prefix $HOME/filezilla/gnutls --with-libgcrypt \ --with-libgcrypt-prefix=$HOME/filezilla/libgcrypt && nice make && make install
SQLite
Загрузите SQLite. Текущая версия sqlite-autoconf-3070800.tar.gz.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xzf ~/Desktop/sqlite-autoconf-3070800.tar.gz cd sqlite-autoconf-3070800 ./configure --prefix $HOME/filezilla/sqlite --disable-static && nice make && make install
Сборка FileZilla 3
Загрузите FileZilla source. Текущая версия FileZilla_3.5.1.src.tar.bz2.
Откройте консоль из папки Applications/Utilities и введите команды:
cd /tmp tar xjf ~/Desktop/FileZilla_3.5.1_src.tar.bz2 cd filezilla-3.5.1 export \ PATH=$HOME/filezilla/wxMac/bin:$HOME/filezilla/gettext/bin:$HOME/filezilla/pkg-config/bin:$PATH export \ PKG_CONFIG_PATH=$HOME/filezilla/gnutls/lib/pkgconfig:$HOME/filezilla/sqlite/lib/pkgconfig export CPPFLAGS="-I$HOME/filezilla/libidn/include" export LDFLAGS="-L$HOME/filezilla/libidn/lib" ./configure && nice make cd FileZilla.app/Contents/MacOS strip filezilla fzputtygen fzsftp cd - && mv FileZilla.app ~/Desktop
Если вы получили ошибку после "nice make", попробуйте это:
rm -rf FileZilla.app && nice make
Проблемы с установкой
Если у вас возникли проблемы, убедитесь, что вы следовали всем пунктам поочередно. Для более конкретных вопросов вы можете воспользоваться форумом FileZilla forum.
Сборка под Snow Leopard 10.6
Если попытаетесь собрать этот код под Snow Leopard 10.6 то при использовании - на некоторых машинах выдает ошибки. Причина этого в том, что нам не удалось компилировать wxWidgets для 64 bit-систем. Смотрите [1] для того чтобы узнать, как собрать wxMac для 32 bit, или можете просто использовать Macports для установки wxWidgets:
sudo port install wxwidgets
Также вам понадобится собрать libgpg-error, libgcrypt, GNU TLS и GNU libidn для 32 bits. Вот команды для libgpg-error:
$ arch_flags="-arch i386" $ ./configure --prefix $HOME/filezilla/libgpg-error \ CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" \ CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" $ nice make -j5 && make install
Команды для установки libgcrypt:
cd libgcrypt-1.4.6 ./configure --prefix $HOME/filezilla/libgcrypt \ --with-gpg-error-prefix=$HOME/filezilla/libgpg-error CC="gcc -m32" nice make -j5 && make install
Обратите внимание что CC="gcc -m32" используется для сборки Assemble кода для 32 bit. Для GNU TLS:
$ ./configure --prefix $HOME/filezilla/gnutls \ --with-libgcrypt --with-libgcrypt-prefix=$HOME/filezilla/libgcrypt \ CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" \ OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" $ nice make -j5 && make install
И для GNU libidn:
$ cd libidn-1.22 $ ./configure --prefix $HOME/filezilla/libidn CFLAGS="$arch_flags" \ CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" \ LDFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" $ nice make -j5 && make install
Теперь можно собрать FileZilla:
cd filezilla-3.5.0 export \ PATH=$HOME/filezilla/wxMac/bin:$HOME/filezilla/gettext/bin:$HOME/filezilla/pkg-config/bin:$PATH export \ PKG_CONFIG_PATH=$HOME/filezilla/gnutls/lib/pkgconfig:$HOME/filezilla/sqlite/lib/pkgconfig export CPPFLAGS="-I$HOME/filezilla/libidn/include" $ ./configure CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" \ CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" \ OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" --with-tinyxml=builtin \ --with-idn-lib=$HOME/filezilla/libidn/lib/libidn.dylib $ nice make -j5 $ cd FileZilla.app/Contents/MacOS $ strip filezilla fzputtygen fzsftp $ cd - $ mv FileZilla.app/ ~/Desktop/