OSXのC言語でsha1の計算をしようしたらコンパイルエラーが出た時の対処法


#include <openssl/sha.h>を使ってsha1の計算をしようとしたらコンパイルエラーが出ました。

Undefined symbols for architecture x86_64:
  "_SHA1_Final", referenced from:
      _calc_sha1 in sha1-8b90d3.o
  "_SHA1_Init", referenced from:
      _calc_sha1 in sha1-8b90d3.o
  "_SHA1_Update", referenced from:
      _calc_sha1 in sha1-8b90d3.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

対処法

コンパイルするときに-lcryptoを指定したら解決しました。

gcc -lssl -lcrypto sha1.c

(Linuxだと-lsslだけでいけた気がするんだけど、なんでだろう...)