C++プログラムをターゲットにautoconfを使っているとき、 configure.inには AC_PROG_CXXを書きますが、 これだけだとちょっとはまるときがある、という話。

AC_CHECK_LIBやAC_C_CONST等のチェックには、 configure内で$CCを呼びます。 で、configure.inでAC_PROG_CXXだけしか書いていない場合には、 デフォルトのccが呼ばれることになります。

困ったことに、ccを購入していないsolarisでも /usr/ucb/ccが存在していて、 こいつは問答無用で異常終了するスクリプトなんですね。 なので、 もしこのccがデフォルトになっていて、configure内で使われると、 ライブラリのテストだろうがconstのテストだろうが とにかく失敗してしまい、 「そのライブラリはない」「その機能はない」という誤った結論を出します。

$CCが動くか確かめるべく、 configure.inにAC_PROG_CCを書いておくと、 ちゃんとgccが使われるようになってこのハマリは回避できます。 たぶん。

2001/05/03 追記
configure内で使う言語はAC_LANG_XXXで指定できました。 今回のような場合、configure.inにAC_LANG_CPLUSPLUSを指定しておくと、 c++を使ってライブラリ等のチェックをしてくれるので、 正しく動作しました。

トップページへ戻る
yokoyama@logos.t.u-tokyo.ac.jp