Editing Talk:Compiling FileZilla 3 under Windows
From FileZilla Wiki
Jump to navigationJump to searchWarning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 123: | Line 123: | ||
make[1]: *** No rule to make target `gl/libgnu.la', needed by `libidn.la'. Stop | make[1]: *** No rule to make target `gl/libgnu.la', needed by `libidn.la'. Stop | ||
+ | |||
+ | == Correct FTP Address for libidn-1.19.tar.gz == | ||
+ | |||
+ | There was an incorrect FTP address given for libidn-1.19.tar.gz in the "libidn" section, so I just corrected it in the main article. The correct address is | ||
+ | ftp://ftp.gnu.org/gnu/libidn/libidn-1.19.tar.gz | ||
+ | |||
+ | How to config for Binary downloads | ||
+ | |||
== My notes [20/05/2011] == | == My notes [20/05/2011] == | ||
− | |||
1) If you use the current MSYS/MinGW components listed on this guide, then the final executable needs "libstdc++-6.dll" and "libgcc_s_dw2-1.dll" to run.<br /> | 1) If you use the current MSYS/MinGW components listed on this guide, then the final executable needs "libstdc++-6.dll" and "libgcc_s_dw2-1.dll" to run.<br /> | ||
So you either have to edit the installer script in "data/install.nsi.in" or just use a proper statically linked GCC (which is not part of this guide atm) | So you either have to edit the installer script in "data/install.nsi.in" or just use a proper statically linked GCC (which is not part of this guide atm) | ||
− | 2) I found out that "mingwm10.dll" is not needed, | + | 2) I found out that "mingwm10.dll" is not needed. |
+ | |||
+ | 3) For libidn, I found out that "cd lib" and the make is not needed. In fact that was the reason of the error described in the guide regarding "gl/libgnu.la".<br /> | ||
+ | I tested this with "libidn-1.22" and this worked for me all the times: | ||
+ | cd /usr/src | ||
+ | tar -xvzf /c/dev/download/libidn-1.22.tar.gz | ||
+ | cd libidn-1.22 | ||
+ | mkdir compile | ||
+ | cd compile | ||
+ | ../configure --disable-shared --enable-static --disable-nls | ||
+ | make -j4 | ||
+ | make install | ||
+ | |||
+ | 4) You should also mention that "libfzshellext-0.dll" should be stripped: | ||
+ | strip src/fzshellext/.libs/libfzshellext-0.dll | ||
+ | |||
+ | 5) The most important fix is this: WxWidgets have a bug when compiling under MinGW with "-std=c++0x" used. So you'll get errors like these: | ||
+ | <nowiki>Making all in engine | ||
+ | make[2]: Entering directory `/home/XhmikosR/source/FileZilla3/compile/src/engine' | ||
+ | if g++ -DHAVE_CONFIG_H -I. -I../../../src/engine -I../../src/include -I../../../src/engine/../include -I/usr/local/include -I/usr/local/include | ||
+ | -I/opt/wxWidgets/lib/wx/include/msw-unicode-release-static-2.8 -I/opt/wxWidgets/include/wx-2.8 -D__WXMSW__ -I/local/include -fpch-preprocess | ||
+ | -g -O2 -Wall -g -fexceptions -std=c++0x -MT filezilla.h.gch -MD -MP -MF ".deps/.Tpo" -c -o filezilla.h.gch ../../../src/engine/filezilla.h; \ | ||
+ | then mv -f ".deps/.Tpo" ".deps/.Po"; else rm -f ".deps/.Tpo"; exit 1; fi | ||
+ | In file included from H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/string.h:55:0, | ||
+ | from H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/longlong.h:20, | ||
+ | from H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/datetime.h:28, | ||
+ | from ../../../src/engine/../include/libfilezilla.h:21, | ||
+ | from ../../../src/engine/filezilla.h:1: | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/buffer.h: In constructor 'wxCharBuffer::wxCharBuffer(const char*)': | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/buffer.h:127:1: error: 'strdup' was not declared in this scope | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/buffer.h: In member function 'wxCharBuffer& wxCharBuffer::operator=(const char*)': | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/buffer.h:127:1: error: 'strdup' was not declared in this scope | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/buffer.h: In constructor 'wxWCharBuffer::wxWCharBuffer(const wchar_t*)': | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/buffer.h:134:1: error: '_wcsdup' was not declared in this scope | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/buffer.h: In member function 'wxWCharBuffer& wxWCharBuffer::operator=(const wchar_t*)': | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/buffer.h:134:1: error: '_wcsdup' was not declared in this scope | ||
+ | In file included from H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/longlong.h:20:0, | ||
+ | from H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/datetime.h:28, | ||
+ | from ../../../src/engine/../include/libfilezilla.h:21, | ||
+ | from ../../../src/engine/filezilla.h:1: | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/string.h: In function 'int Stricmp(const char*, const char*)': | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/string.h:141:31: error: 'strcasecmp' was not declared in this scope | ||
+ | In file included from H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/gdicmn.h:20:0, | ||
+ | from H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/event.h:21, | ||
+ | from ../../../src/engine/../include/libfilezilla.h:22, | ||
+ | from ../../../src/engine/filezilla.h:1: | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/list.h: In constructor 'wxListKey::wxListKey(const wxChar*)': | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/list.h:406:36: error: '_wcsdup' was not declared in this scope | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/list.h: In constructor 'wxListKey::wxListKey(const wxString&)': | ||
+ | H:/progs/MSYS-Filezilla/opt/wxWidgets/include/wx-2.8/wx/list.h:408:44: error: '_wcsdup' was not declared in this scope | ||
+ | make[2]: *** [filezilla.h.gch] Error 1 | ||
+ | make[2]: Leaving directory `/home/XhmikosR/source/FileZilla3/compile/src/engine' | ||
+ | make[1]: *** [all-recursive] Error 1 | ||
+ | make[1]: Leaving directory `/home/XhmikosR/source/FileZilla3/compile/src' | ||
+ | make: *** [all-recursive] Error 1</nowiki> | ||
+ | |||
+ | |||
+ | The solution is rather simple but it took me hours to finally figure this out since I thought that something was wrong in my building environment. | ||
− | + | Use [http://pastebin.com/Fykg6idw this] patch or manually edit "m4/check_cxx0x.m4" and replace all instances of "-std=c++0x" with "-std=gnu++0x". | |
− | + | 6) In order to build gnutls-2.12.5 with libgrypt support use the following: | |
− | ./configure --disable-shared --enable-static --disable-nls --disable-cxx --disable-guile --with-libgcrypt | + | ./configure --disable-shared --enable-static --disable-nls --disable-cxx --disable-guile --with-libgcrypt |
− | + | 7) If you get errors when running "configure" for Filezilla regarding gnutls, you might need to compile and install zlib and add "-lz" in your "libgnutls-config" file in the "gnutls_libs" line. | |
How to build and install zlib isn't part of this guide since using the environment listed in this guide as of today, zlib is not needed. | How to build and install zlib isn't part of this guide since using the environment listed in this guide as of today, zlib is not needed. | ||
− | + | 8) The versions that I used were the following: | |
− | gnutls-2. | + | gnutls-2.12.5 |
libgcrypt-1.4.6 | libgcrypt-1.4.6 | ||
libgpg-error-1.10 | libgpg-error-1.10 | ||
libidn-1.22 | libidn-1.22 | ||
− | sqlite-autoconf- | + | sqlite-autoconf-3070603 |
wxWidgets-2.8.12 | wxWidgets-2.8.12 | ||
− | GCC 4.6. | + | GCC 4.6.0, with recent MSYS/MinGW |