How to compile GnuTLS

34,687

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 from apt
sudo apt install nettle-dev nettle-bin
Share:
34,687
Peter Penzov
Author by

Peter Penzov

Updated on July 09, 2022

Comments

  • Peter Penzov
    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 and make 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
    ssc almost 10 years
    I installed pkg-config and that solved the problem. Possibly, installing autogen also helped - at least, it removed a warning.
  • CodeClown42
    CodeClown42 over 7 years
    Your 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
    Randall over 7 years
    For me, just attempting the make of gnutls was sufficient for creating the headers that nettle needed (that is, no libgmp-dev was needed). Going back and rebuilding nettle built libhogweed (but then threw the error sexp2rsa-test.c:40: undefined reference to 'test_rsa_key', which I decided to ignore, and just do make install) That seemed to do the trick, and 'gnutls' re-built with libhogweed.
  • Terry
    Terry over 4 years
    That doesn't explain the root of the problem. It's just a platform specific i.e. Linux way of solution.