Editing Talk:Compiling FileZilla 3 under Windows

From FileZilla Wiki
Jump to navigationJump to search

Warning: 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] ==
''cleaned up 03/11/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, at least not if you use a newer gcc/mingw.
+
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.
  
3) Do NOT use libgcrypt 1.5.0, it's causing problems for me. I tried it with gnutls-2.10.5 and 2.12.12.
+
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".
  
4) In order to build gnutls-2.12.12 use the following command:
+
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 --without-p11-kit
+
  ./configure --disable-shared --enable-static --disable-nls --disable-cxx --disable-guile --with-libgcrypt
  
5) 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.
+
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.
  
6) The versions that I used were the following:
+
8) The versions that I used were the following:
  gnutls-2.10.5
+
  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-3070900
+
  sqlite-autoconf-3070603
 
  wxWidgets-2.8.12
 
  wxWidgets-2.8.12
  GCC 4.6.1, with recent MSYS/MinGW
+
  GCC 4.6.0, with recent MSYS/MinGW

Please note that all contributions to FileZilla Wiki are considered to be released under the GNU Free Documentation License 1.2 (see FileZilla Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)