【C++】Windows编译FileZilla Client
2023-12-29 15:04:29
按照Compiling FileZilla 3 under Windows - FileZilla Wiki (filezilla-project.org)操作即可。
1.下载安装MSYS2
2.更新MSYS2
进入MSYS2 MinGW 64-bit shell,运行
pacman -Syu
重复退出shell,更新MSYS2。直到没有可更新的。
3.安装工具
进入MSYS2 MinGW 64-bit shell,运行
pacman -S autoconf automake libtool make mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain git svn
解决在工具链中一些bug,就是修复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
4.设置环境
进入MSYS2 MinGW 64-bit shell,运行
mkdir ~/prefix echo 'export PATH="$HOME/prefix/bin:$HOME/prefix/lib:/mingw64/bin:/mingw32/bin:$PATH"' >> ~/.profile echo 'export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"' >> ~/.profile echo 'export PATH="$HOME/prefix/bin:$HOME/prefix/lib:/mingw64/bin:/mingw32/bin:$PATH"' >> ~/.bash_profile echo 'export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"' >> ~/.bash_profile echo 'export LC_ALL=C' >> ~/.bash_profile
5.编译安装依赖
(1)编译安装GMP
cd ~
curl -O https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz
tar xf gmp-6.2.1.tar.xz
cd gmp-6.2.1
./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat
make
make install
(2)编译安装Nettle
cd ~
wget https://ftp.gnu.org/gnu/nettle/nettle-3.7.3.tar.gz
tar xf nettle-3.7.3.tar.gz
cd nettle-3.7.3
./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat
make
make install
(3)编译安装zlib
cd ~
wget https://zlib.net/fossils/zlib-1.2.13.tar.gz
tar xf zlib-1.2.13.tar.gz
cd zlib-1.2.13
LDSHAREDLIBC= ./configure --prefix="$HOME/prefix" -u=GNU
make
make install
(4)编译安装GnuTLS
cd ~
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.7/gnutls-3.7.2.tar.xz
tar xf gnutls-3.7.2.tar.xz
cd gnutls-3.7.2
./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
(5)编译安装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
(6)编译安装wxWidgets
cd ~
git clone --branch WX_3_0_BRANCH --single-branch https://github.com/wxWidgets/wxWidgets.git wx3
cd wx3
./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-unicode --enable-printfposparam --without-libtiff --without-libjpeg --with-expat=builtin --with-libpng=builtin
make
make install
如果github的git clone速度慢,可以用其他方法试一下,比如用gitee。
(7)编译安装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
6.编译打包Filezilla
(1)下载FileZilla
cd ~
svn co https://svn.filezilla-project.org/svn/FileZilla3/trunk filezilla
(2)编译FileZilla
cd ~/filezilla
autoreconf -i
./configure --with-pugixml=builtin
make
如果遇到问题:
checking for Boost Regex... configure: error: in '/c/SPB_Data/filezilla':
configure: error: Boost Regex 1.76 or higher not found.
解决方法:
pacman -S mingw-w64-x86_64-boost
(3)裁剪debug符号
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
(4)打包
安装NSIS
从NSIS Wiki下载并安装NSIS 3。
编译打包脚本
文件资源管理器,右键?data/install.nsi文件,使用?"Compile NSIS Script"。
7.相关链接
Client Compile - FileZilla Wiki (filezilla-project.org)
Compiling FileZilla 3 under Windows - FileZilla Wiki (filezilla-project.org)
另,在Ubuntu下编译Windows版本的FileZilla 3,生成GnuTLS的Makefile文件时,出错,不推荐用linux交叉编译Windows应用。
文章来源:https://blog.csdn.net/eidolon_foot/article/details/135280535
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!