Previous: Module loaders for libltdl, Up: Using libltdl   [Contents][Index]


10.6 ¥Ñ¥Ã¥±¡¼¥¸¤È¤È¤â¤Ëlibltdl¤òÇÛÉÛ¤¹¤ëÊýË¡

libltdl¤Ïlibtool¤È¤È¤â¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¤Î¤Ç¤¹¤¬¡¤libtool¤älibltdl¤ò ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤Ê¤¤¥Ñ¥Ã¥±¡¼¥¸¥æ¡¼¥¶¤ÎÍøÊØÀ­¤Î¤¿¤á¡¤¥Ñ¥Ã¥±¡¼¥¸¤ÎÇÛÉÛ Êª¤Ëlibltdl¤ò´Þ¤á¤¿¤¤¤È»×¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡¥¤³¤Î¾ì¹ç¡¤¼êư¤Ç¥Ñ¥Ã¥±¡¼¥¸ ¤Ë²Ã¤¨¤ëltdl¥ª¥Ö¥¸¥§¥¯¥È¡¤¤Þ¤¿¤Ï¡¤»ÈÍѤ·¤¿¤¤libltdl¤ÎÆÃ¿§¤ò·èÄê ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¤½¤ì¤Ï¡¤¥³¥ó¥Ó¥Ë¥¨¥ó¥¹¥é¥¤¥Ö¥é¥ê¤ä¥¤¥ó¥¹¥È¡¼¥ë²Äǽ ¤Êlibtool¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡¥

libltdl¤ò¥Ã¥±¡¼¥¸¤Ë²Ã¤¨¤ëºÇ¤â´Êñ¤ÊÊýË¡¤Ï¡¤¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Î ltdl.c¤Èltdl.h¤ò¥Ñ¥Ã¥±¡¼¥¸¤Î¥½¡¼¥¹¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤·¡¤ ¥½¡¼¥¹¤Î»Ä¤ê¤È°ì½ï¤Ë¥ê¥ó¥¯¤¹¤ë¤³¤È¤Ç¤¹¡¥¤³¤ì¤Î¼ê½õ¤±¤ò¤¹¤ë¤¿¤á¡¤ autoconf¤Îm4¥Þ¥¯¥í¤¬ltdl.m4¤ÇÍøÍѲÄǽ¤Ç¤¹¡¥autoconf¤ò¼Â¹Ô¤¹¤ëÁ° ¤Ë¡¤¤½¤ì¤é¤¬aclocal.m4¤ÇÍøÍѲÄǽ¤«¤É¤¦¤«¤ò³Î¤«¤á¤ëɬÍפ¬¤¢¤ê¤Þ ¤¹ – automake¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ïltdl.m4¤ÎÆâÍÆ¤ò acinclude.m4¤Ë²Ã¤¨¡¤¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ïaclocal.m4¤Ë²Ã¤¨¤Þ¤¹¡¥ ¥Þ¥¯¥í¤òÍøÍѲÄǽ¤Ë¤·¤¿¸å¡¤ltdl.o¤òÀµ¤·¤¯¥Ó¥ë¥É¤¹¤ë¤¿¤á¤ËɬÍ×¤Ê ¥³¥ó¥Õ¥£¥°¥ì¡¼¥·¥ç¥ó»þ¤ÎÄ´ºº¤ò¼Â¹Ô¤¹¤ë¤¿¤á¡¤‘AC_LIB_LTDL’¥Þ¥¯¥í¤Î ¸Æ¤Ó½Ð¤·¤ò¡¤¥Ñ¥Ã¥±¡¼¥¸¤Îconfigure.in¤Ë²Ã¤¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¥¤ ¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ëlibltdl ¤älibltdl¤Ë°Í¸¤·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥ê¤È¡¤¥Ñ¥±¡¼ ¥¸¤Î¥Ð¥¤¥Ê¥ê¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤¹¤ë¾ì¹ç¡¤¤³¤Î¼êË¡¤Ë¤ÏÌäÂ꤬¤¢¤ê¤Þ¤¹¡¥¥·¥ó ¥Ü¥ë¤ÎÆó½ÅÄêµÁ¤ÎÌäÂ꤬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¥

¥³¥ó¥Ó¥Ë¥¨¥ó¥¹¥é¥¤¥Ö¥é¥ê¤ÎÍøÅÀ¤Î°ì¤Ä¤Ï¡¤¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤¤¤¦ ¤³¤È¤Ê¤Î¤Ç¡¤libtool¤ò»ÈÍѤ¹¤ë¤È¤¤¤¦»ö¼Â¤Ï¥æ¡¼¥¶¤Ë¤È¤Ã¤ÆÌÀÇò¤Ç¤Ï¤Ê¤¯¡¤ ¥æ¡¼¥¶¤¬°ÊÁ°¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤ëlibtool¤Î¥Ð¡¼¥¸¥ç¥ó¤ò¾å½ñ¤­¤·¤Þ¤»¤ó¡¥ °ìÊý¡¤(Î㤨¤Ð¡¤¥Ð¥°¥Õ¥£¥Ã¥¯¥¹¤È¤¤¤Ã¤¿)Íýͳ¤¬¤¢¤Ã¤Æ¡¤libltdl¤ò¥¢¥Ã¥×¥° ¥ì¡¼¥É¤·¤¿¤¤¾ì¹ç¡¤¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥Ð¡¼¥¸¥ç¥ó¤Îlibtool¤òÃÖ¤­´¹¤¨ ¤ëÂå¤ï¤ê¤Ë¡¤¥Ñ¥Ã¥±¡¼¥¸¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¤·¤«¤·¡¤¥×¥í¥° ¥é¥à¤ä¥é¥¤¥Ö¥é¥ê¤¬°ÊÁ°¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¥Ð¡¼¥¸¥ç¥ó¤Îlibltdl¤ò»È ÍѤ·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥ê¤È¥ê¥ó¥¯¤¹¤ë¾ì¹ç¡¤¥ê¥ó¥«¥¨¥é¡¼¤¬È¯À¸¤·¼Â¹Ô»þ¤Ë¥¯¥é¥Ã ¥·¥å¤¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¥¤â¤¦°ì¤Ä¤ÎÌäÂê¤Ï¡¤°ì¤Ä°Ê¾å¤Îlibtool¥é¥¤¥Ö¥é¥ê ¤Ø¥³¥ó¥Ó¥Ë¥¨¥ó¥¹¥é¥¤¥Ö¥é¥ê¤ò¥ê¥ó¥¯¤Ç¤­¤Ê¤¤¤³¤È¤Ç¡¤Ê£À½¤µ¤ì¤¿¥·¥ó¥Ü¥ë¤ò ÆÀ¤ë²ÄǽÀ­¤¬¤¢¤ë¤Î¤Ç¡¤¤½¤Î¤È¤­¤Ï¡¤¤³¤ì¤é¤Î¥é¥¤¥Ö¥é¥ê¤òÍѤ¤¤¿Ã±°ì¤Î¥×¥í ¥°¥é¥à¤È¥ê¥ó¥¯¤·¤Æ¤¯¤À¤µ¤¤¡¥°ìÈÌŪ¤Ë¡¤libtool¤ò»ÈÍѤ·¤Æ¤¤¤ë¾¤Î¥é¥¤¥Ö ¥é¥ê¤Ë°Í¸¤·¤Ê¤¤¥×¥í¥°¥é¥à¤Ç¤Ï¡¤¥³¥ó¥Ó¥Ë¥¨¥ó¥¹¥é¥¤¥Ö¥é¥ê¤òÌäÂê¤Ê¤¯»ÈÍÑ ²Äǽ¤Ç¤¹¡¥libltdl¤Î¤³¤ÎÆÃħ¤òÍøÍѲÄǽ¤Ë¤¹¤ë¤¿¤á¡¤ ‘AC_LIBLTDL_CONVENIENCE’¹Ô¤òconfigure.in¤Ë¡¤ ‘AC_PROG_LIBTOOL’¤ÎÁ°¤Ë²Ã¤¨¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡¥

¥¤¥ó¥¹¥È¡¼¥ë²Äǽ¤Ê¥Ð¡¼¥¸¥ç¥ó¤Îlibltdl¤òÁªÂò¤¹¤ë¤¿¤á¤Ë¡¤¥Þ¥¯¥í ‘AC_LIBLTDL_INSTALLABLE’¤Î¸Æ¤Ó½Ð¤·¤òconfigure.in¤Ë¡¤ ‘AC_PROG_LIBTOOL’¤ÎÁ°¤Ë²Ã¤¨¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡¥¤³¤Î¥Þ¥¯¥í ¤Ï¡¤libltdl¤¬´û¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´ºº¤·¡¤¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¡¤ ¥Ó¥ë¥É¤·¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¥Ñ¥Ã¥±¡¼¥¸libltdl¤òËä¤á¹þ¤à¤³¤È¤òÍ׵ᤷ¤Þ¤¹¡¥ ¤·¤«¤·¡¤¥Ð¡¼¥¸¥ç¥óÄ´ºº¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥¥æ¡¼¥¶¤Ï¡¤ ¥³¥ó¥Õ¥£¥°¥ì¡¼¥·¥ç¥ó¥¹¥¤¥Ã¥Á‘--enable-ltdl-install’¤ò»ÈÍѤ¹¤ë¤³¤È ¤Ç¡¤Â¾¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¸ºß¤Ë´Ø·¸¤Ê¤¯¡¤¥Æ¥¹¥È¤òÍ¥À褷¡¤Ëä¤á¹þ¤Þ¤ì¤¿ libtool¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ë¤«·èÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥

libtool¤ò¥Ñ¥Ã¥±¡¼¥¸¤ËËä¤á¹þ¤à¤¿¤á¡¤libtoolize¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë ‘--ltdl’¤Î¤ß²Ã¤¨¤Æ¤¯¤À¤µ¤¤¡¥¤½¤ì¤Ç¡¤¥Ñ¥Ã¥±¡¼¥¸¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê ‘libltdl’¤Ëlibtool¤Î¥½¡¼¥¹¤ò¥³¥Ô¡¼¤·¤Þ¤¹¡¥¤É¤Á¤é¤Î¥Þ¥¯¥í¤â¡¤ ‘libltdl’¥Ç¥£¥ì¥¯¥È¥ê¤Î°ÌÃÖ¤ò»ØÄꤹ¤ëÄɲäΰú¿ô¤ò¼õ¤±Æþ¤ì¤Þ¤¹¡¥¥Ç ¥Õ¥©¥ë¥È¤Ç¡¤¤É¤Á¤é¤Î¥Þ¥¯¥í¤â‘${top_srcdir}/libltdl’¤ò²¾Äꤷ¤Þ¤¹¡¥

¤É¤Î¥Þ¥¯¥í¤ò»ÈÍѤ·¤Æ¤â¡¤configure.in¤Ï‘AC_CONFIG_SUBDIRS’ ¤ò»ÈÍѤ·¤Æ¡¤libltdl¤ò¥³¥ó¥Õ¥£¥°¥ì¡¼¥·¥ç¥ó¤·¡¤Makefile¤¬¡¤Î㤨¤Ð¡¤ automake¤ÎSUBDIRS¤ò»ÈÍѤ·¤Æ¡¤libtool¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¥µ¥Ömake¤ò³« »Ï¤¹¤ë¤³¤È¤ò³Î¼Â¤Ë¤¹¤ë¤Î¤Ï¤¢¤Ê¤¿¤Ç¤¹¡¥¤É¤Á¤é¤Î¥Þ¥¯¥í¤â¡¤libltdl¤Ç¥ê¥ó ¥¯¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¥ê¥ó¥¯¥Õ¥é¥°¤Î¥·¥§¥ëÊÑ¿ôLIBLTDL¤È¡¤ ltdl.h¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹ ¤ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Õ¥é¥°LTDLINCL¤òÄêµÁ¤·¤Þ¤¹¡¥¤³¤ÎÊÑ¿ô¤¬ Makefile¤ÇÍøÍѲÄǽ¤Ë¤¹¤ë¤³¤È¤ò³Î¼Â¤Ë¤¹¤ë¤¿¤á‘AC_SUBST’¤ò»È ÍѤ·¤¿¤ê¡¤¥Ç¥Õ¥©¥ë¥È¤Ç‘AC_SUBST’¤µ¤ì¤ë¡¤LIBS¤È CPPFLAGS¤Î¤è¤¦¤ÊÊÑ¿ô¤Ë²Ã¤¨¤ë¤Î¤Ï¤¢¤Ê¤¿¼¡Âè¤Ç¤¹¡¥

¥³¥ó¥Ó¥Ë¥¨¥ó¥¹libltdl¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¤LIBLTDL¤Ï¥³¥ó¥Ó¥Ë¥¨¥ó¥¹ libltdl¤Î¥Ð¡¼¥¸¥ç¥ó¤ËÂФ¹¤ë¥Ñ¥¹Ì¾¤Ç¡¤LTDLINCL¤Ïlibltdl¤ò´Þ¤à¥Ç¥£ ¥ì¥¯¥È¥ê¤¬Â³¤¯‘-I’¤Ë¤Ê¤ê¡¤¤É¤Á¤é¤â‘${top_builddir}/’¡¤¤Þ¤¿ ¤Ï¡¤‘${top_srcdir}/’¤Ç¡¤¤½¤ì¤¾¤ì»Ï¤Þ¤ê¤Þ¤¹¡¥

¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ëlibltdl¤Î¥Ð¡¼¥¸¥ç¥ó¤òÍ׵ᤷ¡¤¤½¤ì¤¬¸«¤Ä¤«¤Ã¤¿¾ì ¹ç11¡¤LIBLTDL¤Ï ‘-lltdl’¤Ë¡¤LTDLINCL¤Ï¶õ¤ËÀßÄꤵ¤ì¤Þ¤¹(¤½¤ì¤Ï¡¤libltdl¤¬¥é ¥¤¥Ö¥é¥ê¥Ñ¥¹¤Ë¤¢¤ë¾ì¹ç¡¤ltdl.h¤¬¥¤¥ó¥¯¥ë¡¼¥É¥Ñ¥¹¤Î¤É¤³¤«¤Ë¤¢¤ë ¤È¤¤¤¦¡¤°ÅÌۤβ¾Äê¤Ç¤¹)¡¥¥¤¥ó¥¹¥È¡¼¥ë²Äǽ¤Êlibltdl¤Î¥Ð¡¼¥¸¥ç¥ó¤ò¥Ó¥ë¥É ¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¡¤‘${top_builddir}/’¤Ç»Ï¤Þ¤ë¤½¤Î¥Ñ¥¹Ì¾¤Ï¡¤ LIBLTDL¤ËÊݸ¤µ¤ì¡¤LTDLINCL¤Ï¥³¥ó¥Ó¥Ë¥¨¥ó¥¹¥é¥¤¥Ö¥é¥ê¤Î¾ì ¹ç¤ÈƱÍͤËÀßÄꤵ¤ì¤Þ¤¹¡¥

¤½¤Î¤¿¤á¡¤libltdl¤È¥×¥í¥°¥é¥à¤ò¥ê¥ó¥¯¤·¤¿¤¤¤È¤­¤Ï¡¤¤½¤ì¤ò¥¤¥ó¥¹¥È¡¼¥ë ¤µ¤ì¤¿¡¤¤Þ¤¿¤Ï¥¤¥ó¥¹¥È¡¼¥ë²Äǽ¤Ê¥³¥ó¥Ó¥Ë¥¨¥ó¥¹¥é¥¤¥Ö¥é¥ê¤Ë¤·¡¤¤¹¤Ê¤ï¤Á¡¤ libtool¤ò»ÈÍѤ·¤Æ¡¤LTDLINCL¤òÍѤ¤¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¡¤ ‘$(LIBLTDL)’¤òÍѤ¤¤Æ¥ê¥ó¥¯¤·¤Æ¤¯¤À¤µ¤¤¡¥

¤ª¤½¤é¤¯‘AC_LIBTOOL_DLOPEN’¤âconfigure.in¤Ë¡¤ ‘AC_PROG_LIBTOOL’¤ÎÁ°¤Ë²Ã¤¨¤¿Êý¤¬Îɤ¯¡¤¤½¤¦¤·¤Ê¤¤¾ì¹ç¤Ï¡¤ libtool¤Ïdlopen¥á¥«¥Ë¥º¥à¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤È²¾Äꤷ¡¤¤ª¤½¤é¤¯´õ˾ ¤·¤Æ¤¤¤Ê¤¤dlpreopen¤ËµÕÌá¤ê¤·¤Þ¤¹¡¥

libltdl¤È¥×¥í¥°¥é¥à¤ò¥ê¥ó¥¯¤¹¤ë¤È¤­¡¤-static¤ä -all-static¥¹¥¤¥Ã¥Á¤Î»ÈÍѤòÈò¤±¤Æ¤¯¤À¤µ¤¤¡¥dlopen´Ø¿ô¤Ï¥¹¥¿¥Æ¥£¥Ã ¥¯¥ê¥ó¥¯¤ËÂФ·¤ÆÍøÍѲÄǽ¤Ç¤Ê¤¤²ÄǽÀ­¤¬¤¢¤ë¤Î¤Ç¡¤¤³¤ì¤Ï¤¹¤Ù¤Æ¤Î¥×¥é¥Ã¥È ¥Õ¥©¡¼¥à¤Çưºî¤¹¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥

°Ê²¼¤ÎÎã¤Ï¡¤¥Ñ¥Ã¥±¡¼¥¸¤Ë¥³¥ó¥Ó¥Ë¥¨¥ó¥¹libltdl¤òËä¤á¹þ¤àÊýË¡¤ò¼¨¤·¤Þ¤¹¡¥ ¥¤¥ó¥¹¥È¡¼¥ë²Äǽ¤Ê·ÁÂÖ¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¡¤‘AC_LIBLTDL_CONVENIENCE’ ¤ò‘AC_LIBLTDL_INSTALLABLE’¤ÇÃÖ´¹¤·¤Æ¤¯¤À¤µ¤¤¡¥²æ¡¹¤Ï¡¤libltdl¤¬ ‘libtoolize --ltdl’¤ò»ÈÍѤ·¤ÆËä¤á¹þ¤Þ¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡¥

configure.in¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥

...
dnl Enable building of the convenience library
dnl and set LIBLTDL accordingly
AC_LIBLTDL_CONVENIENCE
dnl Substitute LTDLINCL and LIBLTDL in the Makefiles
AC_SUBST(LTDLINCL)
AC_SUBST(LIBLTDL)
dnl Check for dlopen support
AC_LIBTOOL_DLOPEN
dnl Configure libtool
AC_PROG_LIBTOOL
dnl Configure libltdl
AC_CONFIG_SUBDIRS(libltdl)
...

Makefile.am¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥

...
SUBDIRS = libltdl

INCLUDES = $(LTDLINCL)

myprog_LDFLAGS = -export-dynamic
# The quotes around -dlopen below fool automake <= 1.4 into accepting it
myprog_LDADD = $(LIBLTDL) "-dlopen" self "-dlopen" foo1.la
myprog_DEPENDENCIES = $(LIBLTDL) foo1.la
...

Footnotes

(11)

¤¿¤È¤¨¡¤libltdl¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Æ¤â¡¤libltdl¤¬C¥é¥¤ ¥Ö¥é¥ê°Ê³°¤Î¥é¥¤¥Ö¥é¥ê¤¬Ä󶡤¹¤ë¥·¥ó¥Ü¥ë¤Ë°Í¸¤¹¤ë¾ì¹ç¡¤ ‘AC_LIBLTDL_INSTALLABLE’¤Ï¸¡½Ð¤Ë¼ºÇÔ¤¹¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡¥¤³¤Î¾ì ¹ç¡¤libltdl¤Î¥Ó¥ë¥É¤È¥¤¥ó¥¹¥È¡¼¥ë¤ÏÉÔɬÍפǤ¹¡¥