Using OpenSSL headers in C on a Macbook Pro

This last week, I took the opportunity during the Atlassian ShipIt to work on my CRSCE compression algorithm, rewriting the crsce utility in C rather than Python (for speed and other efficiencies).  But while writing the HSM Buffer, I got the following error from the compiler:

In file included from ./hsm_buffer.h:3:
In file included from ./crypto/crypto.h:17:
./crypto/crypto.c:24:18: fatal error: 'openssl/sha.h' file not found
        #include <openssl/sha.h>


I was trying to compile my project on a Mac Book Pro (El Capitan) using GCC.  While I know that Mac provides its own encryption libraries (and plan to support them at some point), most people interested in CRSCE will want to use it on a Linux or Windows machine (and that means OpenSSL is the greatest bang for the buck.

1 answer

1 accepted

Here's the fix I came up with...

(1) Install openSSL using brew:

brew install openssl --upgrade

I already had openssl installed but the upgrade to El Capitan broke the libraries. So, reinstalling with --upgrade helped me fix my broken state.


(2) When compiling, I had been using:

gcc main.c -o crsce

What I should be doing is...

gcc main.c \
    -o crsce \
    -I /usr/local/opt/openssl/include \
    -L /usr/local/opt/openssl/lib


The conclusion is that this works now and all is well in the world...

#ifdef OS_MAC
        // If using MAC, be sure to...
        //      brew install openssl
        // to install openssl library, then when building use...
        //      gcc <topLevel.c> \
        //          -o <binaryName> \
        //          -I /usr/local/opt/openssl/include \
        //          -L /usr/local/opt/openssl/lib
        // which will tell GCC where the files are located.
        #include <openssl/sha.h>
        #define CRSCE_CRYPTO_READY openssl
    //  #include "...path.../file.h"
        #pragma GCC error ("No recognized crypto package included")
        #pragma message ("A Crypto Package has been included")
        #pragma GCC error ("No crypto package has been included in crypto.c")

Suggest an answer

Log in or Join to answer
Community showcase
Jason Wong
Published Tuesday in Agility Beta

Welcome to agility

Every team in the world is unique, and so   Atlassian believes   that each and every team's best way of working  needs to  be molded to their unique circumstances  – ...

454 views 7 16
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot