Как скомпилировать GnuTLS - PullRequest
16 голосов
/ 01 марта 2012

Я пытаюсь скомпилировать библиотеку GnuTLS несколько раз на Centos 6.2, но безуспешно.Это шаги:

Я скачал крапиву 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

Я запускаю команду make и make install

Я скачал последнюю версию 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.

Чего мне не хватает?

С наилучшими пожеланиями

Ответы [ 6 ]

18 голосов
/ 27 сентября 2013

Проблема в том, что nettle не будет создавать libhogweed, если, как вы заметили, отсутствуют заголовки dev для libgmp. К сожалению, документы и .configure --help и выходные данные из configure ничего об этом не говорят.

Между тем, документы gnuTLS также не объясняют этого (и, как вы заметили, вывод конфигурации здесь не очень полезен). Хотя libgmp указан как предварительное требование, по какой-то причине libhogweed нет (возможно, потому что предполагается, что он является частью крапивы). Причиной вашей ошибки конфигурации "not find -lgmp" является то, что libgmp отсутствует, но libhogweed.so также там не будет, поскольку это скрытая необязательная часть крапивы Если вы затем установите libgmp-dev и просто запустите configure для gnutls, вы получите ту же самую «проверку на libnettle ... no». Это должно сказать «проверка libhogweed ... нет», но тот, кто отвечает за сценарий conf, слишком ленив, чтобы разбить это (я думаю, патч может быть отправлен).

Другими словами, вам нужно установить libgmp-dev , а затем пересобрать крапиву , прежде чем создавать gnutls.

3 голосов
/ 24 августа 2017

Скрипт настройки Gnu TLS не говорит вслух, что pkg-config необходим, и другой пакет может даже не попробовать, если pkg-config не установлен Установка pkg-config устранила проблему для меня.

3 голосов
/ 21 марта 2017

Я установил nettle-dev & nettle-bin и все работает:)

1 голос
/ 01 марта 2012
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.

Я устанавливаю gmp-devel.Проблема исправлена.

0 голосов
/ 02 декабря 2018

На самом деле проблема была в скрипте конфигурации, неправильно вызывая pkg-config Похоже, это связано с различиями версий в файлах автогенов. Во всяком случае я исправил это в configure скрипт.

Они вызывают pkg-config с оператором =>, но libnettle называет себя неправильно. Например, они вызывают $PKG_CONFIG --libs "nettle >= 3.4.1" 2>/dev/null

Исправление: поэтому я просто удалил "=> ​​3.4.1" подстроку и вуаля:

    if test -n "$NETTLE_CFLAGS"; then
    pkg_cv_NETTLE_CFLAGS="$NETTLE_CFLAGS"
 elif test -n "$PKG_CONFIG"; then
    if test -n "$PKG_CONFIG" && \
    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nettle\""; } >&5
  ($PKG_CONFIG --exists --print-errors "nettle") 2>&5
  ac_status=$?
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }; then
  pkg_cv_NETTLE_CFLAGS=`$PKG_CONFIG --cflags "nettle" 2>/dev/null`
              test "x$?" != "x0" && pkg_failed=yes

это для CFLAGS и внизу для флага LIBS:

if test -n "$NETTLE_LIBS"; then
    pkg_cv_NETTLE_LIBS="$NETTLE_LIBS"
 elif test -n "$PKG_CONFIG"; then
    if test -n "$PKG_CONFIG" && \
    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nettle\""; } >&5
  ($PKG_CONFIG --exists --print-errors "nettle") 2>&5
  ac_status=$?
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }; then
  pkg_cv_NETTLE_LIBS=`$PKG_CONFIG --libs "nettle" 2>/dev/null`
              test "x$?" != "x0" && pkg_failed=yes
else
  pkg_failed=yes
fi
 else
    pkg_failed=untried
fi
0 голосов
/ 13 июля 2015

Если у вас есть проблема в Debian, попробуйте установить пакет pkgconf.

...