Mac OS X 10.11 (El Capitan) にアップグレードしました。
それが災いしてかどうかはわかりませんが、CHICKEN Scheme で Eggs の openssl ライブラリを Mac にインストールしようとしたところ、次のようなコンパイルエラーが出て chicken-install
に失敗しました。
$ chicken-install openssl
...
installing openssl:1.7.0 ...
changing current directory to /var/folders/m4/T/temp/openssl
'/usr/local/Cellar/chicken/4.9.0.1/bin/csi' -bnq -setup-mode -e "(require-library setup-api)" -e "(import setup-api)" -e "(setup-error-handling)" -e "(extension-name-and-version '(\"openssl\" \"1.7.0\"))" 'openssl.setup'
'/usr/local/Cellar/chicken/4.9.0.1/bin/csc' -feature compiling-extension -setup-mode -O2 -d0 -s -j openssl openssl.scm -lssl -lcrypto
openssl.c:33:10: fatal error: 'openssl/err.h' file not found
#include <openssl/err.h>
^
1 error generated.
Error: shell command terminated with non-zero exit status 256: 'clang' 'openssl.c' -o 'openssl.o' -c -fno-strict-aliasing -fwrapv -fno-common -DHAVE_CHICKEN_CONFIG_H -m64 -DC_ENABLE_PTABLES -Os -fomit-frame-pointer -fPIC -DPIC -DC_SHARED -I"/usr/local/Cellar/chicken/4.9.0.1/include/chicken"
...
Error: shell command terminated with nonzero exit code
17920
"'/usr/local/Cellar/chicken/4.9.0.1/bin/csi' -bnq -setup-mode -e \"(require-libr...
どうやら、Eggs の openssl をコンパイルするときに OpenSSL のヘッダーファイルが上手く見つけられないようです。 そこで次の手順を試してみました:
- Homebrew で OpenSSL をインストール
CPATH
とLIBRARY_PATH
でヘッダーファイルとライブラリファイルのディレクトリパスを指定するchicken-install openssl
を実行する
brew install openssl
export CPATH=$CPATH:/usr/local/opt/openssl/include
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib
chicken-install openssl
これで無事にコンパイルとリンクが通り、インストールできました。
事前に CPATH
と LIBRARY_PATH
でパスを外からコンパイラに教えてあげることで、chicken-install
の中で clang のコンパイルが走るときにサーチパスの解決が上手くできたようです。
変なところでつまづいてしまったので忘れないよう、こまめに日記をつけていこうと思います。
追記 (Oct 27, 2015)
CSC_OPTIONS
という環境変数に C コンパイラのコンパイルオプションを直接指定できるそうです。
export CSC_OPTIONS='-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib'
chicken-install openssl
または、次のように環境変数 CHICKEN_C_INCLUDE_PATH
と CHICKEN_C_LIBRARY_PATH
にそれぞれインクルードパスとライブラリパスを渡しても同様のようです。
export CHICKEN_C_INCLUDE_PATH=/usr/local/opt/openssl/include
export CHICKEN_C_LIBRARY_PATH=/usr/local/opt/openssl/lib
chicken-install openssl
後からドキュメント1を読んでいたら見つけました。(今度からちゃんと確認します…。)
-
http://wiki.call-cc.org/man/4/Extensions#installing-extensions - "Installing extensions that use libraries" の項目に載っています。 ↩
Leave a Reply