Как разрешить неопределенную ссылку на «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 года.

  • Включить шифрование 3DES для openssl 1.0.1t на Debian 7
  • Обновление openssl от 0.9.8j-0.50.1 до 1.0.2a на SLES11SP3
  • Как преобразовать открытый ключ ssh-keygen в формат, который открывает функцию PEM_read_bio_RSA_PUBKEY ()?
  • SSL: сбой сертификата
  • Как преобразовать открытый ключ ssl, созданный в закрытый ключ openssh?
  • Всегда «ошибка записи выходного файла» в openssl
  • Не удалось скомпилировать Linux Kernel 4.7-rc2
  • Как добавить несколько адресов электронной почты в сертификат SSL через командную строку?
  • OPENSSL_1.0.0 не найден при запуске PyPy 4.0.1 на Amazon Linux (AWS EC2)
  • Проблемы с Apache SSL (Centos 7)
  • Как создать записи SSHFP?
  • Interesting Posts

    OpenBSD stripdown

    Запланируйте задание для переименования файлов в папке и отправьте обновленное оповещение по электронной почте

    LXDE (openbox): двойной щелчок по тексту выбирает только часть слова (не весь текст)

    Переименуйте имя хоста RedHat7 без перезагрузки

    На Red Hat Enterprise Linux 6.2 как я могу использовать Python 2.7 по умолчанию не Python 2.6? Я все же показывал 2.6?

    Требуется ли для драйвера ядра amdgpu загрузить несвободную прошивку?

    218TB XFS LVM файловая система. 144TB бесплатно. Сообщение об ошибке «Нет свободного места на устройстве»

    Будет ли Gnome прекращено в 2014 году?

    Может ли веб-сервер Apache отвечать на запросы SMTP / IMAP / POP3?

    Следуя советам по оптимизации SSD, теперь корневой раздел не будет монтировать rw

    Извлечь строку, если оба значения столбца отображаются в одном столбце из отдельного файла

    Хамачи для веб-серфинга

    Как удалить ошибку «split lines» в Bluefish?

    Плохая производительность сети между AIX 7.1 на скорости 1 Гбит / с и SLES 11 на скорости 10 Гбит / с

    Почему, когда я ssh на один сервер, он показывает bash, а другой имеет мое имя пользователя?

    Linux и Unix - лучшая ОС в мире.