Mac OS X 10.11 El Capitanでopensslのヘッダファイルが見つからないコンパイルエラーの対応方法メモ。
'openssl/md5.h' file not found
この記事は自身への備忘録であり、間違いが含まれている可能性もあるため、
もし間違いが存在していましたらコメントなどからご指摘いただけると助かります。
ソースをコンパイルしようとして下記コマンドを実行したら、
./configure && make
下記のようなエラーが出た。
fatal error: 'openssl/md5.h' file not found
opensslのヘッダを参照できていないらしい。
openssl自体は以前brewコマンドで入れていたので、パスを参照できていないということだと思う。
というか、そもそも、includeするときは、どこのパスを参照しているのだろうか?
調べる方法は下記の通り。
gcc -v 対象ソースファイル
gccコマンドに-vオプションをつけると、参照しているパスとかが見れるらしい
サンプルプログラム(test.c)を書いて、このコマンドを実行してみる。
#include<stdio.h> int main(){ return 0; }
gcc -v test.c
下記は-vオプション実行時のログの一部。
#include <...> search starts here: /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.3.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /System/Library/Frameworks (framework directory) /Library/Frameworks (framework directory)
このログを参考に
sudo ln -s /usr/local/Cellar/openssl/1.0.2e/include/openssl /usr/local/include/openssl
とシンボリックリンクを作成してみたところ、エラーが解消し、成功した。
下記のサイトに助けられた。感謝。
System Integrity Protection(rootless)について
なお、上記コマンドを打った時に最初、
Operation not permitted
というエラーが出た。
これはMac OS X 10.11 El Capitan の最新機能System Integrity Protectionが原因でルート権限での編集が必要なファイルの編集ができなくなっているためのよう。
(そういえばEl Capitanがでたとき話題になっていたような、、、)
下記の記事を参考にディレクリ内での変更を可能とした。