Вы можете считать это дополнительным вопросом к Как установить библиотеку OpenSSL C ++ в 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 не работает:
После успешного выполнения следующего (рекомендуется в файле INSTALL):
$ ./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 <openssl/bio.h>
... чтобы:
#include "openssl/bio.h"
... в исходном файле .cpp, но все равно получают те же неопределенные ошибки ссылок.
Обновление № 4 : теперь я понимаю, что эти неопределенные ошибки ссылок являются ошибками компоновщика. Если я удаляю «-L / usr / local / ssl / lib» из моего Makefile, я не получаю ошибок (но он ссылается на OpenSSL 0.9.8). Содержимое / usr / local / ssl / lib /:
$ ls /usr/local/ssl/lib/
engines libcrypto.a libssl.a pkgconfig
Я добавил -lcrypto, и ошибки исчезли.