Как разрешить неопределенную ссылку на «RAND_egd»

Debian 8 Jessie, версия OpenSSL 1.1.0, версия cURL: 7.50.2

Я пытаюсь создать завиток в системе Linux Debian. Все этапы идут хорошо, пока вы не попытаетесь построить команду make . Этап связывания заканчивается ошибкой ниже:

  CC ../lib/curl-nonblock.o CC ../lib/curl-warnless.o CCLD curl ../lib/.libs/libcurl.so: undefined reference to 'RAND_egd' collect2: error: ld returned 1 exit status Makefile:771: recipe for target 'curl' failed make[2]: *** [curl] Error 1 

Функция RAND_egd является частью библиотеки OpenSSL, поэтому я запустил ldd в файле libcurl.so, чтобы убедиться, что библиотека OpenSSL найдена, и, судя по выводам из ldd ниже.

  linux-vdso.so.1 (0x00007ffceb5a1000) libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007ff9ffc05000) libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007ff9ff9d1000) libssh2.so.1 => /usr/lib/x86_64-linux-gnu/libssh2.so.1 (0x00007ff9ff7a8000) libssl.so.1.1 => /usr/local/lib/libssl.so.1.1 (0x00007ff9ff53a000) libcrypto.so.1.1 => /usr/local/lib/libcrypto.so.1.1 (0x00007ff9ff0af000) liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007ff9feea0000) libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007ff9fec4e000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff9fea33000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff9fe688000) libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007ff9fe3a6000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff9fe1a2000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff9fdf85000) libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007ff9fdd6e000) libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007ff9fdb52000) libgnutls-deb0.so.28 => /usr/lib/x86_64-linux-gnu/libgnutls-deb0.so.28 (0x00007ff9fd833000) /lib64/ld-linux-x86-64.so.2 (0x00007ffa0009e000) libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007ff9fd621000) libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007ff9fd3db000) libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007ff9fd1c7000) libnettle.so.4 => /usr/lib/x86_64-linux-gnu/libnettle.so.4 (0x00007ff9fcf95000) libhogweed.so.2 => /usr/lib/x86_64-linux-gnu/libhogweed.so.2 (0x00007ff9fcd66000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007ff9fcae3000) libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007ff9fc8db000) 

Итак, библиотека есть. Я также проверил файл rand.h в каталоге include OpenSSL, и, конечно, объявление функции есть, поэтому оно должно быть определено в библиотеке. Как я могу найти причину и устранить эту ошибку?

One Solution collect form web for “Как разрешить неопределенную ссылку на «RAND_egd»”

Как разрешить неопределенную ссылку на «RAND_egd»

Я считаю, что теперь вы должны позвонить RAND_add_egd . Также см. Упрощение rand_egd API в списке рассылки openssl-dev.

В коде, который вы компилируете, должен быть защищен OpenSSL 1.1.0. Может быть, что-то вроде:

 #if OPENSSL_VERSION_NUMBER >= 0x10100000L int rc = RAND_egd(<path>); ... #else int rc = RAND_add_egd(<path>); ... #endif 

Даниэль обычно очень хорошо разбирается в OpenSSL. Звучит так, будто вы получаете что-то более низкую версию дистрибутива.

Согласно cURL-выпуску 763 , cURL сначала добавила поддержку openssl-1.1.0-dev, по крайней мере, в апреле 2016 года. Полный журнал изменений находится в cURL Changelog .


Связанный, вероятно, вы должны перейти от cURL 7.50.2. Он имеет 12 известных уязвимостей . Похоже, что 7.51.0 был выпущен 2 ноября 2016 года.

  • Обновление openssl от 0.9.8j-0.50.1 до 1.0.2a на SLES11SP3
  • openssl s_client зависает
  • Как преобразовать открытый ключ ssh-keygen в формат, который открывает функцию PEM_read_bio_RSA_PUBKEY ()?
  • Как глобально настроить безопасные клиенты с помощью OpenSSL на Oracle Linux 5 / RHEL 5?
  • Как я могу обновить существующий .crt-файл с новым зашифрованным файлом rsa .key?
  • Установка PostgreSQL 9.0 на RHEL 6.4 (Как заставить Yum включить версию OpenSSL, которую я построил из исходного кода)
  • Как подключить вывод ffmpeg?
  • CentOS / http2 / ALPN
  • Как настроить мой сервер, чтобы избежать утечки информации из заголовка SERVER его ответа HTTP
  • Заголовок Apache2 'Server сообщает о неправильной версии openSSL
  • Репозитории в стиле Debian и RedHat скомпрометированы ошибкой Heartbleed OpenSSL?
  • Linux и Unix - лучшая ОС в мире.