Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'openssl/conf.h' file not found error on MacOS Sierra

I am working on a C++ project which uses boost asio. Trying to build the libraries that use Asia, I am getting the following error

/usr/local/include/boost/asio/ssl/detail/openssl_types.hpp:19:10: fatal error: 'openssl/conf.h' file not found
#include <openssl/conf.h>

Looking of solutions here & here, I tried

brew install openssl
brew link openssl --force
xcode-select --install

But didn't help.

Doing the following also doesn't seem to work

export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include

Boost version I am using is boost_1_63_0. I am on MacOS Sierra with Xcode 8.3.1. I have installed boost using Homebrew

brew install boost

As I understand from other links, Xcode is looking at the wrong place for ssl headers. But how can I resolve this?

I looked into my /usr/local/include & /opt/local/include. 'openssl/ssl.h' is not present in either locations. But doing a brew install openssl says the following

Warning: openssl is a keg-only and another version is linked to opt.
Use `brew install --force` if you want to install this version

Doing a brew install openssl --force says

Warning: openssl-1.0.2k already installed, it's just not linked.

Doing brew link openssl --force also doesn't solve the issue.

Doig a which openssl returns the following:

/usr/local/bin/openssl

Please suggest

like image 716
TheWaterProgrammer Avatar asked Apr 14 '17 16:04

TheWaterProgrammer


2 Answers

Linked or not, all installed Homebrew packages are reachable via link in /usr/local/opt. Additionally, when you install openssl via Homebrew, Homebrew tells you how to use the openssl libraries and headers.

~ nega@rust 15s
❯ brew install openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2k.el_capitan.bottle.tar.gz
Already downloaded: /Users/nega/Library/Caches/Homebrew/openssl-1.0.2k.el_capitan.bottle.tar.gz
==> Pouring openssl-1.0.2k.el_capitan.bottle.tar.gz
==> Using the sandbox
==> Caveats
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), 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

If you need to have this software first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc

For compilers to find this software you may need to set:
    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include
For pkg-config to find this software you may need to set:
    PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig

==> Summary
🍺  /usr/local/Cellar/openssl/1.0.2k: 1,696 files, 12MB

~ nega@rust 11s
❯ 

You don't need to brew link anything. Just use the directories Homebrew tells you about in the appropriate places in Xcode and CMake.

like image 179
nega Avatar answered Nov 13 '22 07:11

nega


Thanks to @nega for their answer. I'm posting an updated version of the install message for the Apple M1 chip (Arm64) which is too long to leave as a comment on their answer unfortunately!

A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /opt/homebrew/etc/[email protected]/certs

and run
  /opt/homebrew/opt/[email protected]/bin/c_rehash

[email protected] is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides LibreSSL.

If you need to have [email protected] first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/[email protected]/bin:$PATH"' >> ~/.zshrc

For compilers to find [email protected] you may need to set:
  export LDFLAGS="-L/opt/homebrew/opt/[email protected]/lib"
  export CPPFLAGS="-I/opt/homebrew/opt/[email protected]/include"

For pkg-config to find [email protected] you may need to set:
  export PKG_CONFIG_PATH="/opt/homebrew/opt/[email protected]/lib/pkgconfig"

As @nega said, you don't need to brew link anything. I exported the environment variables PATH, LDFLAGS and CPPFLAGS in my bash session as recommended in the message, and then make worked fine for me.

like image 29
samjewell Avatar answered Nov 13 '22 07:11

samjewell