文件传输技术分享:Windows下编译FileZilla!-阿里云开发者社区

开发者社区> 开发与运维> 正文

文件传输技术分享:Windows下编译FileZilla!

简介: 本文介绍了如何为FileZilla 3设置构建环境以及如何使用msys2在Windows下编译它,Msys2是一个cygwin环境。这些条件要求您运行64位Windows,对于完整的MSYS2系统和所有需要的依赖项,您将需要磁盘上的7GiB可用空间。

本文介绍了如何为FileZilla 3设置构建环境以及如何使用msys2在Windows下编译它,Msys2是一个cygwin环境。这些条件要求您运行64位Windows,对于完整的MSYS2系统和所有需要的依赖项,您将需要磁盘上的7GiB可用空间。

1.安装MSYS2环境
下载地址:http://www.msys2.org/

2.安装编译器工具链
FileZilla的shell扩展需要为32位和64位构建,因此我们需要32位和64位的编译器。

工具和编译器

第一次更新
启动MSYS2 MinGW 64位shell
pacman -Syu
关闭MSYS2 shell。
重复,直到没有更新。

安装工具和编译工具链

启动MSYS2 MinGW 64位shell,执行以下命令安装必要的包:
pacman -S autoconf automake libtool make mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain git svn

执行以下操作以解决工具链中一些烦人的错误

#修复windres缺少的平台前缀
[-f /mingw64/bin/x86_64-w64-mingw32-windres.exe] || ln -s /mingw64/bin/windres.exe /mingw64/bin/x86_64-w64-mingw32-windres.exe
[-f /mingw32/bin/i686-w64-mingw32-windres.exe] || ln -s /mingw32/bin/windres.exe /mingw32/bin/i686-w64-mingw32-windres.exe

设置环境

执行以下命令:
mkdir ~/prefix
echo 'export PATH="$HOME/prefix/bin:/mingw64/bin:/mingw32/bin:$PATH"' >> ~/.profile
echo 'export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"' >> ~/.profile
echo 'export PATH="$HOME/prefix/bin:/mingw64/bin:/mingw32/bin:$PATH"' >> ~/.bash_profile
echo 'export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"' >> ~/.bash_profile
重新启动MSYS2 MINGW64 shell。

构建依赖项
构建GMP

cd ~
curl -O https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
tar xf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat
make && make install

构建Nettle

cd ~
wget https://ftp.gnu.org/gnu/nettle/nettle-3.4.tar.gz
tar xf nettle-3.4.tar.gz
cd nettle-3.4
./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat
make && make install

构建zlib

cd ~
wget https://zlib.net/zlib-1.2.11.tar.gz
tar xf zlib-1.2.11.tar.gz
cd zlib-1.2.11
LDSHAREDLIBC= ./configure --prefix="$HOME/prefix" -u=GNU
make && make install

构建GnuTLS

cd ~
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.19.tar.xz
tar xf gnutls-3.5.19.tar.xz
cd gnutls-3.5.19
./configure --prefix="$HOME/prefix" --enable-shared --disable-static --build=x86_64-w64-mingw32 --with-included-libtasn1 --disable-doc --disable-guile --without-p11-kit --enable-local-libopts --disable-nls --with-included-unistring --disable-tests
make && make install

构建SQLite

cd ~
wget https://sqlite.org/2018/sqlite-autoconf-3250300.tar.gz
tar xf sqlite-autoconf-3250300.tar.gz
cd sqlite-autoconf-3250300
./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static
make && make install

构建wxWidgets

cd ~
git clone --branch WX_3_0_BRANCH --single-branch https://github.com/wxWidgets/wxWidgets.git wx3
cd wx3
./configure --prefix="$HOME/prefix" --enable-shared --disable-static --enable-unicode --without-libtiff --without-libjpeg --with-expat=builtin --with-libpng=builtin
make && make install

构建libfilezilla

cd ~
svn co https://svn.filezilla-project.org/svn/libfilezilla/trunk libfilezilla
cd libfilezilla
autoreconf -i
./configure --prefix="$HOME/prefix" --enable-shared --disable-static
make && make install

构建Filezilla
下载FileZilla

cd ~
svn co https://svn.filezilla-project.org/svn/FileZilla3/trunk filezilla

构建FileZilla

cd ~/filezilla
autoreconf -i
./configure --with-pugixml=builtin
make

剥掉一些符号信息和调试信息

strip src/interface/.libs/filezilla.exe
strip src/putty/.libs/fzsftp.exe
strip src/putty/.libs/fzputtygen.exe
strip src/fzshellext/64/.libs/libfzshellext-0.dll
strip src/fzshellext/32/.libs/libfzshellext-0.dll
strip data/dlls/*.dll

3.构建安装程序

安装NSIS
http://nsis.sourceforge.net/下载并安装NSIS
编译安装程序脚本
在资源管理器中右键单击data / install.nsi,然后从上下文菜单中使用“编译NSIS脚本”。

4.故障排除

如果您遇到问题,请确保您已按照每个步骤完全按照说明进行操作,并确保您没有错过任何步骤。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章