Как я устанавливаю и создаю против OpenSSL 1.0.0 на Ubuntu?

Можно ли считать это последующим вопросом тому, Как я устанавливаю библиотеку C++ OpenSSL по Ubuntu?

Я пытаюсь создать некоторый код Ubuntu 10.04 LTS, который требует OpenSSL 1.0.0.

Ubuntu 10.04 LTS идет с OpenSSL 0.9.8k:

$ openssl version
OpenSSL 0.9.8k 25 Mar 2009

Таким образом, после выполнения sudo apt-get install libssl-dev и создание, выполнение ldd подтверждают, что я связался в 0.9.8:

$ ldd foo
        ...
        libssl.so.0.9.8 => /lib/i686/cmov/libssl.so.0.9.8 (0x00110000)
        ...
        libcrypto.so.0.9.8 => /lib/i686/cmov/libcrypto.so.0.9.8 (0x002b0000)
        ...

Как я устанавливаю OpenSSL 1.0.0 и 1.0.0 пакета разработки?

Обновление: я пишу это обновление после чтения ответа SB (но прежде, чем попробовать его), потому что ясно, что я должен объяснить, что очевидное решение загрузки и установки OpenSSL 1.0.0 не работает:

После успешного выполнения следующего (рекомендуемый в файле УСТАНОВКИ):

  $ ./config
  $ make
  $ make test
  $ make install

... Я все еще добираюсь:

OpenSSL 0.9.8k 25 Mar 2009

... и:

$ sudo apt-get install libssl-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libssl-dev is already the newest version.
The following packages were automatically installed and are no longer required:
  linux-headers-2.6.32-21 linux-headers-2.6.32-21-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

... и (только для проверки) после восстановления моего кода, ldd все еще возвращает то же самое.

Обновление № 2: Я добавил "-I/usr/local/ssl/include" и "-L/usr/local/ssl/lib" опции (предложенный SB) к моему make-файлу, но я теперь добираюсь, набор не определяют ссылочные ошибки компиляции, например:

/home/dspitzer/foo/foo.cpp:86: undefined reference to `BIO_f_base64'
/home/dspitzer/foo/foo.cpp:86: undefined reference to `BIO_new'

/usr/local/ssl/include/содержит только openssl каталог (который содержит многочисленные.h файлы), таким образом, я также попробовал "-I/usr/local/ssl/include/openssl", но получил те же ошибки.

Обновление № 3: Я пытался измениться, OpenSSL включает от (например):

#include 

кому:

#include "openssl/bio.h"

... в .cpp исходном файле, но все еще получают те же неопределенные ссылочные ошибки.

Обновление № 4: Я теперь понимаю, что те неопределенные ссылочные ошибки являются ошибками компоновщика. Если я удаляю "-L/usr/local/ssl/lib" из своего Make-файла, я не получаю ошибки (но он связывается с OpenSSL 0.9.8). Содержание/usr/local/ssl/lib/:

$ ls /usr/local/ssl/lib/
engines  libcrypto.a  libssl.a  pkgconfig

Я добавил-lcrypto, и ошибки ушли.

12
задан Community 23 May 2017 в 11:45
поделиться

1 ответ

Получите исходный код 1.0.0a из здесь .

# tar -xf openssl-1.0.0a.tar.gz
# cd openssl-1.0.0a
# ./config
# sudo make install

По умолчанию он помещается в / usr / local / ssl.

При сборке вам нужно указать gcc, что нужно искать заголовки в / usr / local / ssl / include и связываться с библиотеками в / usr / local / ssl / lib. Вы можете указать это, выполнив что-то вроде:

gcc test.c -o test -I/usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto

РЕДАКТИРОВАТЬ НЕ перезаписывать какие-либо системные библиотеки. Лучше всего хранить новые библиотеки в / usr / local. Перезапись настроек Ubuntu по умолчанию может быть опасна для вашего здоровья и сломать вашу систему.

Кроме того, я ошибался насчет путей, поскольку я только что пробовал это в Ubuntu 10.04 VM. Фиксированный.

Обратите внимание, что нет необходимости изменять LD_LIBRARY_PATH, поскольку библиотеки openssl, с которыми вы связываете по умолчанию, являются статическими библиотеками (по крайней мере, по умолчанию - может быть способ настроить их как динамические библиотеки в./ config step)

Возможно, вам потребуется линкнуть libcrypto, потому что вы используете некоторые вызовы, которые созданы и определены в пакете libcrypto. Openssl 1.0.0 фактически создает две библиотеки: libcrypto и libssl.

РЕДАКТИРОВАТЬ 2 Добавлен -lcrypto в строку gcc.

18
ответ дан 2 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: