- 1.shobj.h present but cannot be compiled
- 2.cc1plus.exe has stopped working
- 3.localtime_r gmtime_r相关的错误
- 4.cygwin posix环境影响process.h
在自己编译FileZilla Client中编译过3.9,但是对于最近的3.10却一直编译不出来。
换了多个编译器,其中发现个新环境msys2中提到过的基本都试了一遍(实际上主要在实验有4.9的,因为Filezilla3.10.x似乎用到了4.9的一些特性或者头文件)。
1.shobj.h present but cannot be compiled
这个问题也比较复杂,除了msys2,几乎不可避免都存在这个错误,因为是configure时的错误,所以下面的一些错误就不会出现。
|
解决办法: > D:\msys\mingw64\x86_64-w64-mingw32\include\shlobj.h > D:\msys\mingw\i686-w64-mingw32\include\shlobj.h > 开头几行参考MinGW-w64的git源码 > 把9-11行改成如下内容
|
2.cc1plus.exe has stopped working
|
解决办法,我在论坛提问,作者botg给出了答案. configure的时候添加 --disable-precomp
这个已经添加到了wiki页面,所以应该不存在什么问题。
3.localtime_r gmtime_r相关的错误
-gnutls-3.3.13/gl/time.h read_file.c
time.h 461 1 error expected identifier or before token
|
检测办法echo -e "#include<pthread.h>\n localtime_r(1,2);" | gcc -E -
看输出结果的最后一行是不是localtime_r(1,2),有几个版本的MinGW(TDM-GCC 4.9.2,Win-builds1.5 gcc 4.8.3)展开成了一些乱七八糟的宏。
问题在于这个pthread.h里面定义的错误。
解决办法:把gl/time.h和src/gl/time.h这两个文件手动打一个patch。368行include
4.cygwin posix环境影响process.h
|
- 在cygwin/msys2环境下面,posix环境影响process.h,在src/include/libfilezilla.h里面添加一行(第28行)
#include <process.h>