¿Compilando programas en C usando libssl en OS X El Capitan?
macos gcc (2)
Tengo un programa en C simple usando libssl.
En Linux, instalé el paquete openssl-dev y compilé el programa con la siguiente línea:
gcc test_libssl.c -o test_libssl -lcrypto -lssl
Ahora me gustaría hacer lo mismo en mi Mac. La misma línea resultó en:
fatal error: ''openssl/conf.h'' file not found
Intenté instalar openssl (openssl-dev no funcionó) con home-brew a través de brew install openssl
Esto me dio:
...
==> Instalar openssl
==> Descarga https://www.openssl.org/source/openssl-1.0.2a.tar.gz curl: (22) La URL solicitada devolvió el error: 404 No encontrado
Encontré una pregunta SO relacionada sin respuesta.
Yo tambien lo intenté
brew info openssl
y me informaron que
Esta fórmula es sólo para barriles. Mac OS X ya proporciona este software e instalar otra versión en paralelo puede causar todo tipo de problemas.
Apple ha desaprobado el uso de OpenSSL en favor de sus propias bibliotecas TLS y criptográficas
¿Qué tengo que hacer / instalar para poder compilar programas de programas C con libssl en OS X?
O, ¿es una mala idea el primer lugar (dada la advertencia anterior)?
ACTUALIZAR:
Conseguí el openssl instalado usando brew. No estoy seguro de si este fue el problema pero actualicé brew. Tomando el consejo de brew
Probablemente debería cambiar la propiedad y los permisos de / usr / local a su cuenta de usuario. sudo chown -R $ (whoami): admin / usr / local
y this tema en cuenta.
Luego, siguiendo el consejo de @Alex Reynolds, lo compilé exitosamente con
gcc test_libssl.c -o test_libssl -lssl -lcrypto -L/usr/local/opt/openssl/lib -I/usr/local/opt/openssl/include
La respuesta de @Alex Reynolds es correcta, pero si desea compilar / configurar el programa de otra persona, puede ejecutar esto de antemano:
export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include
Tengo Homebrew instalado en El Capitán (10.11.1) y he instalado una versión actual de OpenSSL sin efectos aparentes:
$ uname -a
Darwin hostname.local 15.0.0 Darwin Kernel Version 15.0.0: Sat Sep 19 15:53:46 PDT 2015; root:xnu-3247.10.11~1/RELEASE_X86_64 x86_64
$ brew info openssl
openssl: stable 1.0.2d (bottled)
OpenSSL SSL/TLS cryptography library
https://openssl.org/
This formula is keg-only.
Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries
/usr/local/Cellar/openssl/1.0.2d_1 (464 files, 17M)
Built from source
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/openssl.rb
==> Dependencies
Build: makedepend ✔
==> Options
--universal
Build a universal binary
--without-check
Skip build-time tests (not recommended)
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
/usr/local/etc/openssl/certs
and run
/usr/local/opt/openssl/bin/c_rehash
This formula is keg-only, which means it was not symlinked into /usr/local.
Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you''ll need to add to your
build variables:
LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
¿Ha intentado agregar las marcas que sugiere a la declaración de compilación de su aplicación? Puede editar el makefile
su aplicación u otra declaración de compilación y agregar esas entradas, después de una brew install openssl
. Esto puede ayudar a su compilador a encontrar y vincular la biblioteca y los archivos de encabezado que necesita.
Parece que todo está ahí. Aquí están los encabezados:
$ ls -al /usr/local/opt/openssl/include/openssl/
total 3688
drwxr-xr-x 77 alexpreynolds admin 2618 Aug 24 13:46 .
drwxr-xr-x 3 alexpreynolds admin 102 Aug 24 13:46 ..
-rw-r--r-- 1 alexpreynolds admin 6182 Aug 24 13:46 aes.h
-rw-r--r-- 1 alexpreynolds admin 63142 Aug 24 13:46 asn1.h
-rw-r--r-- 1 alexpreynolds admin 24435 Aug 24 13:46 asn1_mac.h
-rw-r--r-- 1 alexpreynolds admin 34475 Aug 24 13:46 asn1t.h
-rw-r--r-- 1 alexpreynolds admin 38566 Aug 24 13:46 bio.h
-rw-r--r-- 1 alexpreynolds admin 5351 Aug 24 13:46 blowfish.h
...
Y bibliotecas estáticas y dinámicas:
$ ls -al /usr/local/opt/openssl/lib
total 11664
drwxr-xr-x 10 alexpreynolds admin 340 Aug 24 13:46 .
drwxr-xr-x 11 alexpreynolds admin 374 Aug 24 13:46 ..
drwxr-xr-x 14 alexpreynolds admin 476 Aug 24 13:46 engines
-r--r--r-- 1 alexpreynolds admin 1861780 Aug 24 13:46 libcrypto.1.0.0.dylib
-r--r--r-- 1 alexpreynolds admin 3206344 Aug 24 13:46 libcrypto.a
lrwxr-xr-x 1 alexpreynolds admin 21 Aug 24 13:46 libcrypto.dylib -> libcrypto.1.0.0.dylib
-r--r--r-- 1 alexpreynolds admin 364144 Aug 24 13:46 libssl.1.0.0.dylib
-r--r--r-- 1 alexpreynolds admin 524424 Aug 24 13:46 libssl.a
lrwxr-xr-x 1 alexpreynolds admin 18 Aug 24 13:46 libssl.dylib -> libssl.1.0.0.dylib
drwxr-xr-x 5 alexpreynolds admin 170 Aug 24 13:46 pkgconfig