curl / Mailing Lists / curl-library / Single Mail


Re: How to compile libcurl.dll with GnuTLS integrated?

From: Ray Satiro via curl-library <>
Date: Mon, 14 Aug 2017 02:58:02 -0400

On 8/8/2017 6:27 PM, Reino Wijnsma wrote:
> I guess I didn't phrase my question right. I should've asked: "Is it
> possible at all to compile *a shared libcurl.dll* using statically
> built dependencies?".
> In other words: I wish to end up with a '/curl.exe/' that relies on a
> '/libcurl.dll/' which has all the statically built dependencies
> integrated / imported (gmp, nettle, gnutls and zlib).

I'm sure this is possible but I don't think any of the build systems
support it. For autotools at least I know it's difficult. You'd have to
stop using -static in LDFLAGS and then modify the libtool script shared
section after configure completes. In the libtool script there's
archive_cmds which is what makes the dll. It will look something like this:

# Commands used to build a shared archive.
archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags -o
\$output_objdir/\$soname \$wl--enable-auto-image-base -Xlinker
--out-implib -Xlinker \$lib"

deplibs are all the dependencies that will be added, -lz etc. What you
can do is make all the dependencies static by signalling static before
deplibs and then go back to shared afterwards:
-Wl,-Bstatic \$deplibs -Wl,-Bdynamic

That's probably not all you'll have to do, it would also involve adding
-static-libgcc and maybe pthreads if the compiler adds it just by
default, but offhand I don't know how to do that one as static in a DLL
from mingw-w64 gcc.

Received on 2017-08-14