読者です 読者をやめる 読者になる 読者になる

AC_CHECK_LIBはマングルされた名前を使うことができない?

autotoolsで、libhoge.soをconfigureスクリプトでチェックするためにautoconfをするのだが、c++コードからコンパイルされら共有ライブラリだと、ライブラリ内ではシンボルがマングルされたまま保存されている。マングルされたシンボルはAC_CHECK_LIBを通過することができない。AC_CHECK_LIBの第二引数がfunctionを要求しているためである。このfunctionはマングルされていない関数名なのか、それとも名前空間の処遇を考えるとマングル後のfunctionを入れるのか、にしてもconfigureスクリプトにマングルする機能なんてないだろうしなぁと思ったり。autotoolsはgccではないわけで、当たり前といえば当たり前か。

(追記)昔のオレが出していた答えはAC_HAVE_LIBRARYだった。configure.acはこんな感じになっていた。

...
#for libxerces-c
if test -z "$LIBXERCESC_LIB"; then
   AC_HAVE_LIBRARY( xerces-c, 
     LIBXERCESC_LIB='-lxerces-c',
     AC_MSG_ERROR(*** XERCES-C library not found ***)
   )
fi
AC_SUBST(LIBXERCESC_LIB)
...