Rexdf

The devil is in the Details.

自己编译FileZilla Client

| Comments

发现Filezilla出奇的容易编译,甚至都不需要启动VisualStudio就可以编译出一个直接可以执行的安装包FileZilla_3_setup.exe。

起因是因为官网下载的是一个下载器,SourceForge为了赚钱貌似故意替换了一些下载量大的软件的二进制安装包。虽然百度上面也是有最新版的真正安装包下载的,但是我随手谷歌一下发现编译起来似乎没啥难度。于是随手编译了,相对Firefox,Gpg4win,Chrome来说简直太容易了!

下面是一些简单笔记。

cygwin里面自带了mingw的,但是似乎会搞坏环境,所以我编译带gtk的程序都是使用MinGW的msys来作为环境的,这个环境似乎有个问题是不支持任何汉字显示(也许是我还没有配置好)。

msys里面我用win-build的yypkg-1.4.0.exe装了一个完整的gtk开发环境.MinGW在对gcc版本是异常敏感的,所以一个整套完整系统就可以省下很多各个库找不到定位点的问题。

基本上按照这里,先编译安装依赖库,然后编译FileZilla,完全不会有什么问题。最后装一个NSIS,右键一点,就编译出来一个FileZilla_3_setup.exe

这里遇到的问题是 无法启动此程序,因为计算机中丢失libtasn1-6.dll

这个问题有多个解决方案,第一是在/opt/windows_32/bin里面有一个libtans1-6.dll,把它拷贝到安装目录下面就可以解决问题。但是这样显然不优雅。

问题是Filezilla依赖于GnuTLS,而GnuTLS依赖于Libtasn1,而Win-build默认提供了一个shared的dll作为。

这里解决方案好像又有两种,其一是编译GnuTLS时使用选项--with-included-libtasn1,其二是自己编译安装静态的Libtasn1。这里我记录的是第二种。

执行下面的编译静态的Libtasn1。

wget ftp://ftp.gnu.org/gnu/libtasn1/libtasn1-4.2.tar.gz
tar zxvf libtasn1-4.2.tar.gz
cd libtasn1-4.2
./configure --enable-static --disable-shared
make
make install

然后重新编译GnuTLS就可以了.(最好先make clean,然后再configure)

Comments