Как разрешить неопределенную ссылку на «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 не загружает двигатель из файла конфигурации
  • Обновление OpenSSL на сервере SLES11
  • Как глобально настроить безопасные клиенты с помощью OpenSSL на Oracle Linux 5 / RHEL 5?
  • Centos / RHEL 7: обновление OpenSSL недоступно
  • nginx крит-ошибка tlsv1 ответ на плохой сертификат: номер предупреждения SSL 113
  • Закрытый ключ OpenSSH запутан: Ключ нагрузки: неверный формат
  • Объяснение времени сборки версии в отличие от номера версии, например OpenSSL 1.0.1e против h
  • SMTP работает через почтовый клиент, но не через openssl
  • SSL (размещен на LB), который будет установлен на серверах Apache Downstream?
  • Создание файла jks, а затем его проверка
  • Внедрение TLS 1.2, когда я SSH в коробку в качестве меры против POODLE
  • Interesting Posts

    Выборочно копировать из коллекции удаленных каталогов

    Минимальные права доступа к файлу для удаления файла

    Как переместить некоторые, но не все файлы из одного каталога в другой?

    Неверное поведение команды сортировки

    История Unix: код возврата восьмеричный?

    Что такое современный эквивалент чтения `/ dev / audio`?

    btrfs, позорная ошибка ENOSPC при выполнении резервного копирования из моментального снимка

    Получить текущий уровень яркости экрана

    таблица маршрутизации «220» в ядре Linux 3.2.0-23-generic

    Как настроить собственный EDID вручную?

    Как физически восстановить данные на удаленном сервере?

    , вернется один или два дня. Просмотр разных флагов

    Неудовлетворительные зависимости после использования репозитория backports

    среда bash – вставка строк со специальными символами

    Можно ли динамически устанавливать пользователей .gitconfig (для git config -global)?

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