Building GnuTLS 3.0.9 on MS-Windows

Eli Zaretskii eliz at
Sun Jan 8 12:12:36 CET 2012

> Date: Sun, 08 Jan 2012 11:48:01 +0100
> From: Nikos Mavrogiannopoulos <nmav at>
> CC: gnutls-devel at
> Hi Eli, thanks for the information.

You are welcome.

> > This happens because no -I flag points to the ../../../lib
> > directory, where the headers live.
> I see there is however a "-I./../../", isn't ../../ the same as ../../../lib in your build?

Yes, it is.  It sounds like I reached the wrong conclusion.  the real
reason is the same as for one of the other problems: the trailing
slash in "-I./../../".  So probably removing that slash will do the

> > My analysis of this was that it is impossible to build both static 
> > and dynamic libraries on Windows in the same build.  If that is true,
> > then the `configure' script should be modified to not try that by
> > default; the default should probably build only the dynamic 
> > libraries. In any case, configuring with ./configure
> > --build=i686-pc-mingw32 --prefix=/d/usr --disable-shared succeeds and
> > produces a static library libgnutls.a (but not before bumping into a
> > couple of more problems, described below).
> According to libtool documentation this should have been done by libtool.
> "By default, this macro turns on shared libraries if they are
>  available, and also enables static libraries if they don't
>  conflict with the shared libraries."
> Thus it looks like a libtool bug. However I'd suggest you use the alternative
> option of building a shared libgnutls instead so you can replace it in
> case of important security fixes (e.g. now the one with DTLS).

Sorry, I'm not following: which "alternative option"?

> > Problem #3: The linker fails in src/: CC     udp-serv.o udp-serv.c:
> > In function `udp_server': udp-serv.c:107: warning: implicit
> > declaration of function `usleep' CC     common.o CC     p11common.o 
> > CCLD   gnutls-serv.exe udp-serv.o(.text+0x417): In function
> > `udp_server': d:/usr/eli/utils/gnutls-3.0.9/src/udp-serv.c:107:
> > undefined reference to `usleep'
> I'll add the gnulib usleep module for that. 

That one is currently useless: it has a 1-sec granularity.  I will
take this up with gnulib folks, then.

> You should try 3.0.11 because not only tests were fixed but also
> some internal library fixes (for openpgp) were done to make it work
> in windows.

OK.  But it sounds like trying 3.0.12, when it is available, would be
even better, as it is supposed to include a few other fixes you
mentioned above.

> > CCLD   gnutls-serv.exe Info: resolving _nettle_arcfour_crypt by
> > linking to __imp__nettle_arcfour_crypt (auto-import)
> > (there were a lot of these in many places).  I understand that this 
> > means the linker resolved a function by linking against a DLL, but 
> > perhaps some compiler or linker switch could prevent these warnings 
> > from being emitted in the first place.
> I don't know what this warning means or does. How would you fix it?

I don't know.  I will try to find out and get back to you.

> Thank you for this information. I've updated the git with your suggested fixes.


More information about the Gnutls-devel mailing list