Вы можете рассмотреть этот вопрос после Как установить библиотеку 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 не работает:
После успешного выполнения следующего (рекомендуется в файле 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) в мой файл makefile, но теперь я получаю кучу ошибок определения нестандартных ссылок, например:
/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, но все же получите те же undefined опорные ошибки.
Обновление # 4: теперь я понимаю, что эти справочные ошибки undefined являются ошибками компоновщика. Если я удалю "-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, и ошибки исчезли.