Homebrew でインストールした readline が使えない問題
macOS Sierra に Homebrew で readline をインストールした。
$ brew install readline
しかしながら、readline を参照するプログラムがコンパイルできないという問題が発生した。
/usr/local
以下をチェックしてみると、readline 関係の諸々は一切見当たらない。
なんで?と思ったのだが、どうやら readline は keg-only らしい。
keg-only なフォーミュラはシンボリックリンクが作られない。
keg-only かどうかは brew info
で確認できる。
$ brew info readline readline: stable 7.0.3 (bottled) [keg-only] Library for command-line editing https://tiswww.case.edu/php/chet/readline/rltop.html /usr/local/Cellar/readline/7.0.3_1 (46 files, 1.5MB) Poured from bottle on 2017-06-23 at 02:36:12 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/readline.rb ==> Caveats This formula is keg-only, which means it was not symlinked into /usr/local, because macOS provides the BSD libedit library, which shadows libreadline. In order to prevent conflicts when programs look for libreadline we are defaulting this GNU Readline installation to keg-only.. For compilers to find this software you may need to set: LDFLAGS: -L/usr/local/opt/readline/lib CPPFLAGS: -I/usr/local/opt/readline/include
理由は様々なのだろうが、readline の場合は libedit と干渉するから、とのこと。
そんなわけで、-L/usr/local/opt/readline/lib -I/usr/local/opt/readline/include
を自分の Makefile に書き加えたら
コンパイルが通るようになった。
まあ事前に brew info
しとけばハマらずに済んだということ。