How to compile GnuTLS
Solution 1
configure:8798: checking for libnettle
configure:8820: gcc -std=gnu99 -o conftest -g -O2 conftest.c /usr/lib/libnettle.so /usr/lib/libhogweed.so -lgmp >&5
/usr/bin/ld: cannot find -lgmp
collect2: ld returned 1 exit status
configure:8820: $? = 1
configure: failed program was:
configure:8830: result: no
configure:8856: error:
***
*** Libnettle 2.4 was not found.
I install gmp-devel. The problem is fixed.
Solution 2
The issue is that nettle won't build libhogweed
unless, as you've observed, the dev headers for libgmp are present. Unfortunately, the docs and .configure --help
and output from configure don't say anything about this.
Meanwhile, the gnuTLS docs don't explain this either (and as you notice, its configure output here is not very helpful). Although libgmp is listed as a pre-req, for some reason libhogweed is not (perhaps because it is assumed to be part of nettle). The reason for your configure error "cannot find -lgmp" is that libgmp isn't present, but libhogweed.so
won't be there either, since it is a hidden optional part of nettle. If you then install libgmp-dev and just run configure for gnutls, you'll get the same "checking for libnettle... no". What this should say is "checking for libhogweed... no", but whoever is in charge of the conf script is too lazy to break that up (I guess a patch could be submitted).
In other words, you need to install libgmp-dev and then rebuild nettle before you build gnutls.
Solution 3
I installed nettle-dev
& nettle-bin
and it works :)
Solution 4
Gnu TLS configure script does not say out loud that pkg-config is needed and other package may not even be tried if pkg-config is not installed. Installing pkg-config fixed the issue for me.
Solution 5
GnuTLS
depends on nettle
which is missing on your environment.
- You can download the
nettle
package and install
cd nettle-xxx
./configure
make
sudo make install
- Or if it is
ubuntu
system you can install fromapt
sudo apt install nettle-dev nettle-bin
Peter Penzov
Updated on July 09, 2022Comments
-
Peter Penzov almost 2 years
I'm trying to compile GnuTLS library several times on Centos 6.2 but with no luck. These are the steps:
I downloaded Nettle 2.4
[root@localhost opt]# wget http://www.lysator.liu.se/~nisse/archive/nettle-2.4.tar.gz [root@localhost nettle-2.4]# tar zxvf nettle-2.4.tar.gz [root@localhost nettle-2.4]# cd nettle-2.4 [root@localhost nettle-2.4]# ./configure --enable-shared --prefix=/usr Version: nettle 2.4 Host type: x86_64-unknown-linux-gnu ABI: 64 Assembly files: x86_64 Install prefix: /usr Library directory: ${exec_prefix}/lib64 Compiler: gcc Shared libraries: yes Public key crypto: no
I run the command
make
andmake install
I downloaded the latest GnuTLS
./configure --with-libnettle-prefix=/usr hecking for shared library run path origin... done checking whether to use nettle... yes checking for libnettle... no configure: error: *** *** Libnettle 2.4 was not found.
What am I missing?
Best wishes
-
ssc almost 10 yearsI installed
pkg-config
and that solved the problem. Possibly, installingautogen
also helped - at least, it removed a warning. -
CodeClown42 over 7 yearsYour solution (installing
pkg-config
) would be prerequisite as well, although that is more generally true for building software on GNU/Linux that links against commonplace external libs. -
Randall over 7 yearsFor me, just attempting the make of
gnutls
was sufficient for creating the headers thatnettle
needed (that is, no libgmp-dev was needed). Going back and rebuildingnettle
builtlibhogweed
(but then threw the errorsexp2rsa-test.c:40: undefined reference to 'test_rsa_key'
, which I decided to ignore, and just domake install
) That seemed to do the trick, and 'gnutls' re-built with libhogweed. -
Terry over 4 yearsThat doesn't explain the root of the problem. It's just a platform specific i.e. Linux way of solution.