初めに
HEASoft6.34をダウンロードする必要があったのですが、その際に出た一つのエラーに苦しみましたので共有させていただければと思います。
環境
python:3.12.3
HEASoft:6.34
エラー内容
./configureとmakeはうまくいくが、make install の際に、以下のエラーコードとともに、
インストールがストップしてしまう。
bash
ld: library not found for -ltinfo
解決方法
第一にltininfoを含むソフトウェアであるncursesをインストールします。
bash
brew install ncurses
次に以下のコマンドを打ってみましょう
bash
pkg-config --cflags --libs ncurses
出力結果は以下のようになっているはずです。
bash
-D_DARWIN_C_SOURCE -DNCURSES_WIDECHAR -
I/opt/homebrew/Cellar/ncurses/6.5/include/ncursesw -
I/opt/homebrew/Cellar/ncurses/6.5/include -
L/opt/homebrew/Cellar/ncurses/6.5/lib -
Wl,-search_paths_first
-lncursesw
最後が-lncurseswとなっていれば、以下の方法でこのエラーは治ります。
(-ltinfoと書かれていれば、以下の方法ではない原因があります)
HEASoftのmakefileの書き換え
ここからはltinfoからlncurseswを用いてmakeするように変更していきます
第一に以下のディレクトリに移動します
bash
cd ~/adsoft/heasoft-6.33.2/tcltk/tclreadline
内部にあるMakefleをvs codeなどで開きます。
以下のようになっていると思いますので、LIBSを変更します。
変更前
bash
CPPFLAGS = -I/opt/homebrew/opt/tcl-tk/include
LDFLAGS = -L/opt/homebrew/opt/tcl-tk/lib
LIBS = -ltinfo /Users/watanabeyuuki/adsoft/heasoft-6.34/heacore/readline
変更後
bash
CPPFLAGS = -I/opt/homebrew/opt/tcl-tk/include
LDFLAGS = -L/opt/homebrew/opt/tcl-tk/lib
LIBS = -L/opt/homebrew/opt/ncurses/lib -lncursesw
以上でうまく動くと思います。
原因
heasoftが6.33から6.34に変更される際に、-lncursesから -ltininfoに変化したため、このエラーが起きています。この前あったメンテナンスで治っていればいいのですが、どうなるかわかりませんのでここに書かせていただきます。