UPDATE (August 12, 2017) – Check out Tom Vander Aa’s comment in the comments. His solution is better than my solution in the original post – it has much less chance of breaking other stuff that uses OpenSSL.
ORIGINAL:
When trying to install some Perl Programming Language modules on MacOS X, using a perlbrew-built perl, I was getting some weird linking errors with various OpenSSL headers. Here’s an example from Net::SSLeay:
laptop$ cpan install Net::SSLeay ... Configuring M/MI/MIKEM/Net-SSLeay-1.72.tar.gz with Makefile.PL CPAN::Reporter not installed. No reports will be sent. *** Found OpenSSL-0.9.8z installed in /usr *** Be sure to use the same compiler and options to compile your OpenSSL, perl, and Net::SSLeay. Mixing and matching compilers is not supported. ... cc -c -fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -O3 -DVERSION=\"1.72\" -DXS_VERSION=\"1.72\" "-I/Users/jmaslak/perl5/perlbrew/perls/perl-5.22.1/lib/5.22.1/darwin-2level/CORE" SSLeay.c SSLeay.xs:163:10: fatal error: 'openssl/err.h' file not found #include <openssl/err.h> ^ 1 error generated. make: *** [SSLeay.o] Error 1 MIKEM/Net-SSLeay-1.72.tar.gz /usr/bin/make -- NOT OK
I highlighted the interesting parts – I run homebrew on my Mac to manage development tools and the like. Sure enough, it had installed openssl already:
laptop$ brew install openssl Warning: openssl-1.0.2e already installed
Hmmm, version 1.0.2e, which doesn’t look like the 0.9.8z that Net::SSLeay found.
A bit of Googling and scratching my head and I found the magic incantation:
laptop$ brew link openssl --force
Once that was done, I could successfully install Net::SSLeay and other SSL Perl modules. I’m guessing that the links broke sometime during an OS upgrade. Hopefully this post will save you a bit of time!
Safer and also worked:
export CPATH=/usr/local/opt/openssl/include
export LIBRARY_PATH=/usr/local/opt/openssl/lib
cpan install Crypt::OpenSSL::RSA
LikeLike
Tom, that’s way better than what I came up with – thanks! I updated the original post with a note to check out our comment.
LikeLike