Puede considerar esto como una pregunta de seguimiento al How do I install the OpenSSL C++ library on Ubuntu?¿Cómo instalo y compilo contra OpenSSL 1.0.0 en Ubuntu?
Estoy tratando de construir un código en Ubuntu 10.04 LTS que requiere OpenSSL 1.0.0.
Ubuntu 10.04 LTS viene con OpenSSL 0.9.8k:
$ openssl version
OpenSSL 0.9.8k 25 Mar 2009
Así que después de ejecutar sudo apt-get install libssl-dev
y la construcción, funcionamiento LDD confirma que he vinculado en 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)
...
¿Cómo puedo instalar OpenSSL 1.0.0 y el paquete de desarrollo 1.0.0?
actualización: Estoy escribiendo esta actualización después de leer SB 's respuesta (pero antes de probarlo), porque está claro que es necesario explicar que la solución obvia de cómo descargar e instalar OpenSSL 1.0.0 no funciona :
Después de hacer exitosamente lo siguiente (se recomienda en el archivo de instalación):
$ ./config
$ make
$ make test
$ make install
... todavía consigo:
OpenSSL 0.9.8k 25 Mar 2009
... y:
$ 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.
... y (sólo para asegurarse) después de reconstruir mi código, LDD sigue devolviendo la misma cosa.
Actualización # 2: He añadido el "-I/usr/local/ssl/include" y "-L/usr/local/ssl/lib" opciones (sugerido por SB) a mi makefile, pero 'm ahora conseguir un montón de referencia undefine errores de compilación, por ejemplo:
/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/contiene solamente un directorio de OpenSSL (que contiene numerosos archivos .h), por lo que también probé " -I/usr/local/ssl/include/openssl "pero obtuve los mismos errores.
Actualización # 3: He intentado cambiar el OpenSSL incluye a partir de (por ejemplo):
#include <openssl/bio.h>
... a:
#include "openssl/bio.h"
... en el archivo de origen .cpp pero aún obtiene los mismos errores de referencia indefinidos.
Actualización n. ° 4: ahora me doy cuenta de que los errores de referencia no definidos son errores del enlazador. Si elimino el "-L/usr/local/ssl/lib" de mi Makefile, no obtengo los errores (pero se vincula con OpenSSL 0.9.8). El contenido de/usr/local/ssl/lib/son:
$ ls /usr/local/ssl/lib/
engines libcrypto.a libssl.a pkgconfig
que añade -lcrypto, y los errores se fueron.
++ para la actualización 4 #. Gracias. –