Next: Thread Saftey in libltdl, Previous: Libltdl interface, Up: Using libltdl [Contents][Index]
dlopen
²Äǽ¤Ê¥â¥¸¥å¡¼¥ë¤ÎºîÀ®libtool¥â¥¸¥å¡¼¥ë¤Ï¡¤¤¤¤¯¤Ä¤«¤ÎÎã³°¤Ï¤¢¤ê¤Þ¤¹¤¬¡¤Ä̾ï¤Îlibtool¥é¥¤¥Ö¥é ¥ê¤Ë»÷¤Æ¤¤¤Þ¤¹¡¥
libtool¤Î‘-module’¥¹¥¤¥Ã¥Á¤òÍѤ¤¤Æ¡¤¥â¥¸¥å¡¼¥ë¤È¥ê¥ó¥¯¤¹¤ëɬÍפ¬ ¤¢¤ê¡¤¤½¤·¤Æ¡¤dlopen¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Çlibtool¤¬ dlpreopen¤Ç¤¤ë¤è¤¦¡¤‘-dlopen modulename.la’¤òÍѤ¤¤Æ¥â¥¸¥å¡¼¥ë¤ò dlopen¤¹¤ë¤¿¤á¤Ë¡¤¤¢¤é¤æ¤ë¥×¥í¥°¥é¥à¤È¥ê¥ó¥¯¤¹¤Ù¤¤Ç¤¹¡¥¥â¥¸¥å¡¼¥ë¤¬¡¤ ¤¢¤é¤æ¤ë¾¤Î¥é¥¤¥Ö¥é¥ê¤Ë°Í¸¤¹¤ë¾ì¹ç¡¤¥â¥¸¥å¡¼¥ë¤È¥ê¥ó¥¯¤¹¤ë¤È¤¤ä¡¤¤½ ¤ì¤òdlopen¤¹¤ë¥×¥í¥°¥é¥à¤ò¥ê¥ó¥¯¤¹¤ë¤È¤¡¤¤½¤ì¤é¤ò³Î¼Â¤Ë»ØÄꤷ¤Æ¤¯¤À¤µ ¤¤¡¥ÆÃÄê¤Î¥â¥¸¥å¡¼¥ë¤ËÂФ·see Versioning¤ò»ÈÍѶػߤˤ·¤¿¤¤¾ì¹ç¡¤ ‘-avoid-version’¥¹¥¤¥Ã¥Á¤òÍѤ¤¤Æ¥ê¥ó¥¯¤¹¤Ù¤¤Ç¤¹¡¥libtool¥â¥¸¥å¡¼ ¥ë¤Ï¡¤"lib"ÀÜÆ¬¼¤¬ÉÔÍפʤ³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥¤·¤«¤·¡¤automake 1.4 ¤ä¤½¤ì°Ê¹ß¤Î¤â¤Î¤Ï¡¤¤½¤Î¤è¤¦¤Ê¥â¥¸¥å¡¼¥ë¤Î¥Ó¥ë¥É¤¬É¬ÍפǤ¹¡¥
Ä̾¤½¤ÎÆâÉô¤òÃΤëɬÍפʤ·¤Ë¥×¥í¥°¥é¥à¤¬dlopen¤Ç¤¤ë¤è¤¦¡¤°ìÁȤΥ⠥¸¥å¡¼¥ë¤ÏƱ¤¸¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Ä󶡤·¡¤¤¹¤Ê¤ï¤ÁƱ¤¸¥·¥ó¥Ü¥ë¤ò¥¨¥¯¥¹¥Ý¡¼ ¥È¤·¤Þ¤¹¡¥¤¹¤Ù¤Æ¤Î¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿¥·¥ó¥Ü¥ë¤Ç¡¤¥·¥ó¥Ü¥ë¤Î¾×ÆÍ¤òÈò¤±¤ë ¤¿¤á¡¤"modulename_LTX_"¤òÁ°ÃÖ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹(‘modulename’¤Ï¥â ¥¸¥å¡¼¥ë̾¤Ç¤¹)¡¥ÆâÉô¥·¥ó¥Ü¥ë¤Ï¡¤Î㤨¤Ð"_modulename_"¤òÁ°ÃÖ¤¹¤ë¤È¤¤¤Ã ¤¿¡¤Â¾¤Î¥â¥¸¥å¡¼¥ë¤È¾×ÆÍ¤·¤Ê¤¤¤è¤¦¤ÊÊýË¡¤Ç̿̾¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥°ì²ó °Ê¾åÀë¸À¤µ¤ì¤¿¡¤Æ±¤¸¥·¥ó¥Ü¥ë¤ò»ý¤Ä¤³¤È¤ò¥µ¥Ý¡¼¥È¤¹¤ë¥·¥¹¥Æ¥à¤â¤¢¤ê¤Þ¤¹ ¤¬¤½¤ì¤ÏÄ̾ï°Ü¿¢À¤¬¤Ê¤¯¡¤¤½¤Î¤è¤¦¤Ê¥â¥¸¥å¡¼¥ë¤òdlpreopen¤¹¤ë¤³¤È¤òÉÔ ²Äǽ¤Ë¤·¤Þ¤¹¡¥libltdl¤Ï¡¤¥·¥ó¥Ü¥ë¤ÎËÜÅö¤Î̾Á°¤òÆÀ¤ë¤È¤¡¤¼«Æ°Åª¤ËÀÜÆ¬ ¼¤òÀÚ¤ê¼è¤ê¤Þ¤¹¡¥¤µ¤é¤Ë¡¤Èólibtool¥â¥¸¥å¡¼¥ë¤âdlopen¤Ç¤¤ë¤è¤¦¡¤ÀÜÆ¬ ¼¤ò»ÈÍѤ·¤Æ¤¤¤Ê¤¤¥â¥¸¥å¡¼¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡¥
foo1.c¤Ï°Ü¿¢²Äǽ¤Êlibtool¥â¥¸¥å¡¼¥ë¤ÎÎã¤Ç¤¹¡¥¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤¿ ¥·¥ó¥Ü¥ë¤Ï"foo1_LTX_"¡¤ÆâÉô¥·¥ó¥Ü¥ë¤Ï"_foo1_"¤¬Á°ÃÖ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥¥³¡¼ ¥É¤Î²ÄÆÉÀ¤ò¹â¤á¤ë¤¿¤á¡¤¥¨¥¤¥ê¥¢¥¹¤ÏºÇ½é¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
/* aliases for the exported symbols */ #define foo foo1_LTX_foo #define bar foo1_LTX_bar /* a global variable definition */ int bar = 1; /* a private function */ int _foo1_helper() { return bar; } /* an exported function */ int foo() { return _foo1_helper(); }
Makefile.am¤Ï¡¤¥â¥¸¥å¡¼¥ëfoo1.la¤ò¥Ó¥ë¥É¤¹¤ë¤Î¤ËɬÍפʵ¬ §¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡¥
... lib_LTLIBRARIES = foo1.la foo1_la_SOURCES = foo1.c foo1_la_LDFLAGS = -module ...