2010-06-10 10 views
150

Estoy intentando construir un código en Ubuntu 10.04 LTS que usa OpenSSL 1.0.0. Cuando ejecuto make, invoca g ++ con la opción "-lssl". La fuente incluye:¿Cómo instalo las bibliotecas de OpenSSL en Ubuntu?

#include <openssl/bio.h> 
#include <openssl/buffer.h> 
#include <openssl/des.h> 
#include <openssl/evp.h> 
#include <openssl/pem.h> 
#include <openssl/rsa.h> 

me corrieron:

$ sudo apt-get install openssl 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
openssl is already the newest version. 
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded. 

Pero supongo que el paquete openssl no incluye la biblioteca. Me sale estos errores en maquillaje:

foo.cpp:21:25: error: openssl/bio.h: No such file or directory 
foo.cpp:22:28: error: openssl/buffer.h: No such file or directory 
foo.cpp:23:25: error: openssl/des.h: No such file or directory 
foo.cpp:24:25: error: openssl/evp.h: No such file or directory 
foo.cpp:25:25: error: openssl/pem.h: No such file or directory 
foo.cpp:26:25: error: openssl/rsa.h: No such file or directory 

¿Cómo se instala la biblioteca OpenSSL C++ en Ubuntu 10.04 LTS?

Hice un man g++ y (en "Opciones para vincular") para la opción -l dice: "El vinculador busca una lista estándar de directorios para la biblioteca ..." y "Los directorios buscados incluyen varios sistemas estándar directorios ... "¿Cuáles son esos directorios de sistema estándar?

+1

No es un duplicado, pero respondido por [¿Qué son * paquetes de nivel?] (http://stackoverflow.com/questions/2358801/what-are-devel-packages). – Troubadour

+0

Tiene razón acerca de la convención de nomenclatura '-dev'. También puede usar el administrador de paquetes 'synaptic' para listar todos los paquetes cuyos nombres contengan libssl; examinar esa lista y sus descripciones probablemente le den la pista. – crazyscot

+1

Sé que esta pregunta ya está bastante muerta, pero dado que la encontré recientemente, creo que otra persona también podría hacerlo. Si desea listar todos los paquetes que son similares a un determinado nombre, me gusta usar> Búsqueda aptitud No requiere nivel de privilegios root para ejecutar una búsqueda. –

Respuesta

324

desea instalar el paquete de desarrollo, que es libssl-dev:

sudo apt-get install libssl-dev 
+1

Pero esta no es la versión que quería (1.0.0), que no está acondicionado para 10.04. Ver esta respuesta para 1.0.0: http://stackoverflow.com/questions/3153114/how-do-i-install-and-build-against-openssl-1-0-0-on-ubuntu – nealmcb

+0

Ah, buena llamada . Solo noté en ese momento que estaba tratando de usar las bibliotecas de desarrollo pero que no estaba instalando el paquete -dev. Ni siquiera noté el número de versión. –

4

Desea el paquete openssl-devel. Al menos creo que es -devel en Ubuntu. Podría ser -dev. Es uno de los dos.

+0

Tanto' sudo apt-get install openssl-dev' e instalar retorno openssl-devel' "E apt-get sudo ': No se pudo encontrar paquete ... " –

+6

Aparentemente es libssl-dev como han dicho los otros. No uso Ubuntu, así que no estoy familiarizado con los nombres de los paquetes. – jonescb

+6

Openssl-devel era lo que necesitaba para CentOS 6. 'sudo yum install openssl-devel *' – Banjer

22

apt-get install libssl-dev

11

¿Cómo podría haber averiguado por mismo (aparte de hacer esta pregunta aquí)? ¿Puedo decir de alguna manera apt-get para enumerar todos los paquetes, y grep para ssl? ¿O necesito saber la convención de nomenclatura "lib * -dev" ?

Si está enlazando con -lfoo, entonces la biblioteca es probable libfoo.so. La biblioteca en sí misma es probablemente parte del paquete libfoo, y los encabezados se encuentran en el paquete libfoo-dev como descubriste.

Algunas personas usan la aplicación gui "sináptica" (sudo synaptic) para (localizar e) instalar paquetes, pero prefiero usar la línea de comando. Una cosa que hace que sea más fácil encontrar el paquete correcto desde la línea de comandos es el hecho de que apt-get admite la finalización de bash.

Pruebe a escribir sudo apt-get install libssl y luego presione "tab" para ver una lista de nombres de paquetes coincidentes (lo que puede ayudar cuando necesita seleccionar la versión correcta de un paquete que tiene múltiples versiones u otras variaciones disponibles).

Completar Bash en realidad es muy útil ... por ejemplo, también puede obtener una lista de comandos que "apt-get" admite escribiendo sudo apt-get y luego presionando "tab".

+2

Creo que te refieres a la aplicación "Synaptics", no a la "sinergia". Synergy es una herramienta que comparte su teclado y mouse en múltiples sistemas. A menos que haya otra sinergia de la que no tenga conocimiento. – Tauren

+0

Gracias, me refiero a la _did_ "sináptica" gestor de paquetes (nota: no Synaptics sea, que es una empresa). Hay otra sinergia que es una característica de Palm webOS, y es probable que sea por eso que mis dedos escribieron "sinergia" en lugar de "sináptica". –

+0

Ubuntu podría aliviar el dolor para la gente ya que ha sido un problema durante años. * Pueden * alias 'openssl-dev' a' libssl-dev' pero eligen no hacerlo. – jww

2

Otra forma de instalar la biblioteca OpenSSL desde el código fuente en Ubuntu, sigue estos pasos, aquí WORKDIR es el directorio de trabajo:

  1. sudo apt-get install pkg-config
  2. cd WORKDIR
  3. git clon https://github.com/openssl/openssl.git
  4. cd openssl
  5. ./config
  6. hacer
  7. sudo make install
  8. /etc/ld.so.conf Abrir el archivo, añadir una nueva línea: "/ usr/local/lib" en EOF
  9. ldconfig sudo