Estoy tratando de 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:
#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <openssl/des.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
Corrí:
$ 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. Recibo estos errores en make:
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 instalo la biblioteca OpenSSL C ++ en Ubuntu 10.04 LTS?
Hice una 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 directorios de sistema estándar ..." ¿Cuáles son esos directorios del sistema estándar?
c++
ubuntu
installation
openssl
Daryl Spitzer
fuente
fuente
-dev
convención de nomenclatura. También puede usar elsynaptic
administrador de paquetes para enumerar todos los paquetes cuyos nombres contienen libssl; examinar esa lista y sus descripciones probablemente le darán la pista.apt-cache search package-name
Respuestas:
Desea instalar el paquete de desarrollo, que es libssl-dev:
fuente
apt install
para nuevo dist ubuntuapt-get install libssl-dev
fuente
Si está vinculando con,
-lfoo
entonces es probable que la bibliotecalibfoo.so
. La biblioteca en sí misma es probablemente parte dellibfoo
paquete, y los encabezados están en ellibfoo-dev
paquete como has descubierto.Algunas personas usan la aplicación "sináptica" GUI (
sudo synaptic
) para (localizar e) instalar paquetes, pero prefiero usar la línea de comandos. Una cosa que hace que sea más fácil encontrar el paquete correcto desde la línea de comandos es el hecho de queapt-get
admite la finalización de bash.Intente escribir
sudo apt-get install libssl
y luego presione tabpara ver una lista de nombres de paquetes coincidentes (que puede ayudar cuando necesite seleccionar la versión correcta de un paquete que tenga múltiples versiones u otras variaciones disponibles).La finalización de Bash es realmente muy útil ... por ejemplo, también puede obtener una lista de comandos que
apt-get
admite escribiendosudo apt-get
y luego presionando tab.fuente
openssl-dev
alibssl-dev
pero no eligen.Encontré una solución detallada aquí: instalar OpenSSL manualmente en Linux
De la publicación del blog ...:
fuente
Otra forma de instalar la biblioteca openssl desde el código fuente en Ubuntu, sigue los pasos a continuación, aquí
WORKDIR
está tu directorio de trabajo:fuente
Quieres el
openssl-devel
paquete. Al menos creo que está-devel
en Ubuntu. Puede ser-dev
. Es uno de los dos.fuente
sudo apt-get install openssl-dev
ysudo apt-get install openssl-devel
devolver "E: No se pudo encontrar el paquete ..."sudo yum install openssl-devel*
Como regla general, cuando esté en Debian o Ubuntu y le falte un archivo de desarrollo (o cualquier otro archivo), use
apt-file
para averiguar qué paquete proporciona ese archivo:Un vistazo rápido a cada uno de los paquetes que devuelve el comando, usando
apt show
le dirá cuál de los paquetes es el que está buscando:fuente
sudo apt-get install libcurl4-openssl-dev
fuente