configure
script. The configure script is run by the user who wants to build curl and it does a whole bunch of things:./configure
in the source directory is enough. When the script completes, it outputs a summary of what options it has detected/enabled and what features that are still disabled, some of which possibly because it failed to detect the presence of necessary third-party dependencies that are needed for those functions to work. If the summary is not what you expected it to be, invoke configure again with new options or with the previously used options adjusted.make
to build the entire thing and then finally make install
to install curl, libcurl and associated things. make install
requires that you have the correct rights in your system to create and write files in the installation directory or you will get some errors.--disable-static
or --disable-shared
options to configure.xyz
as a shared library, it is as basically a matter of adding -lxyz
to the linker command line no matter which other libraries xyz
itself was built to use. But, if that xyz
is instead a static library we also need to specify each dependency of xyz
on the linker command line. curl's configure cannot keep up with or know all possible dependencies for all the libraries it can be made to build with, so users wanting to build with static libs mostly need to provide that list of libraries to link with.--with-amissl
--with-bearssl
--with-openssl
--with-gnutls
--with-openssl
--with-mbedtls
--with-nss
--with-openssl
--with-rustls
(point to the rustls-ffi install path)--with-schannel
--with-secure-transport
--with-wolfssl
--without-ssl
.--with-*
options also allow you to provide the install prefix so that configure will search for the specific library where you tell it to. Like this:--with-*
options on the configure command line. Pick which one to make the default TLS backend with --with-default-ssl-backend=[NAME]
. For example, build with support for both GnuTLS and OpenSSL and default to OpenSSL:--with-libssh2
--with-libssh
--with-wolfssh
--with-*
options also allow you to provide the install prefix so that configure will search for the specific library where you tell it to. Like this:--with-quiche
--with-ngtcp2 --with-nghttp3