Next: , Previous: Building modules, Up: Dlopened modules   [Contents][Index]


9.2 dlopen

libtool¤Ï¡¤dlopen¤¹¤ëlibtool¥ª¥Ö¥¸¥§¥¯¥È¤Èlibtool¥é¥¤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë¤Ë ÂФ·¡¤¤¿¤È¤¨dlopen¤Èdlsym´Ø¿ô¤¬Ìµ¤¤¥×¥é¥Ã¥È¥Õ¥©¡¼ ¥à¤Ç¤â¡¤¤½¤Î¥·¥ó¥Ü¥ë¤¬²ò·è¤Ç¤­¤ë¤è¤¦¤Ë¡¤ÆÃÊ̤Υµ¥Ý¡¼¥È¤òÄ󶡤·¤Þ¤¹¡¥

“laziness”¤ÎÁý²Ã½ç¤Ë¥×¥í¥°¥é¥à¤Ë¥³¡¼¥É¤ò¥í¡¼¥É¤¹¤ë¡¤°Ê²¼¤ÎÊ̤ÎÊýË¡¤ò ¹Íθ¤·¤Þ¤¹¡¥

  1. »²¾È¤¹¤ë¤·¤Ê¤¤¤Ë´Ø¤ï¤é¤Ê¤¤¡¤¼Â¹Ô·Á¼°¤Î°ìÉô¤È¤Ê¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Ø ¤Î¥ê¥ó¥¯¤Ç¤¹¡¥¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤¥ê¥ó¥«¤Ï¼Â¹Ô·Á¼° ¤ÎºîÀ®¤òÄä»ß¤·¤Þ¤¹¡¥
  2. ¾åµ­¤Î¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Ç¤Î̤ÄêµÁ¤Î»²¾È¤òËþ­¤µ¤»¤ë¤è¤¦¤Ë¡¤¥ê¥ó¥¯»þ ¤Ë¸¡º÷¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Î¡¤¥ê¥ó¥«¤ËÂФ¹¤ë¥¹¥¿¥Æ¥£¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤ÎÀë ¸À¤Ç¤¹¡¥¥¹¥¿¥Æ¥£¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤¥ê¥ó¥«¤Ï¼Â¹Ô·Á¼°¤Îºî À®¤òÄä»ß¤·¤Þ¤¹¡¥
  3. ¾åµ­¤Î¥Õ¥¡¥¤¥ë¤Ç¤Î̤ÄêµÁ¤Î»²¾È¤òËþ­¤µ¤»¤ë¤¿¤á¤Ë¡¤¼Â¹Ô»þ¤Ë¸¡º÷¤µ¤ì¤ë¤è ¤¦¤Ë¤¹¤ë¤¿¤á¤Î¡¤¼Â¹Ô»þ¥ê¥ó¥¯¤Î¶¦Í­¥é¥¤¥Ö¥é¥ê¤ÎÀë¸À¤Ç¤¹¡¥¶¦Í­¥é¥¤¥Ö¥é¥ê ¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥«¤Ï¼Â¹Ô·Á¼°¤ÎºîÀ®¤òÄä»ß¤·¤Þ¤¹¡¥
  4. ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¼«¿È¤¬²ò·è¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¡¤»²¾È¤ò¥À¥¤¥Ê¥ß¥Ã¥¯¤Ë ²ò·è¤¹¤ëdlopen¥â¥¸¥å¡¼¥ë¤Ç¤¹¡¥¥â¥¸¥å¡¼¥ë¤ò³«¤¯¤È¤­¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤ê¡¤ ¥â¥¸¥å¡¼¥ë¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï²õ¤ì¤ë¤³¤È¤Ê¤¯²óÉü¤·¤Þ ¤¹¡¥

libtool¤Ï¡¤¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¥×¥í¥°¥é¥à¤Ë¥ê¥ó¥¯¤·¡¤ ¥×¥í¥°¥é¥à¤Î¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤òɽ¸½¤¹¤ë¥Ç¡¼¥¿¹½Â¤¤òºîÀ®¤¹¤ë¤³¤È¤Ç¡¤¥¹¥¿ ¥Æ¥£¥Ã¥¯¤Ê¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç‘-dlopen’¥ª¥×¥·¥ç¥ó¤ò¥¨¥ß¥å¥ì¡¼¥È¤·¤Þ ¤¹¡¥

¤³¤ÎÆÃħ¤ò»ÈÍѤ¹¤ë¤¿¤á¡¤¥×¥í¥°¥é¥à¤Î¥ê¥ó¥¯»þ(see Link mode)¤Ë ‘-dlopen’¤ä‘-dlpreopen’¥Õ¥é¥°¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¤¥¢¥×¥ê¥±¡¼¥·¥ç ¥ó¤Çdlopen¤·¤¿¤¤¥ª¥Ö¥¸¥§¥¯¥È¤òÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

Structure: struct lt_dlsymlist { const char *name; lt_ptr address; }

name°À­¤Ï¡¤"fprintf"¤Î¤è¤¦¤Ê¡¤¥·¥ó¥Ü¥ë̾¤ÎNULL½ªÃ¼¤µ¤ì¤Æ ¤¤¤ëʸ»úÎó¤Ç¤¹¡¥address°À­¤Ï¡¤&fprintf¤Î¤è¤¦¤ÊÂбþ¤¹¤ë¥ª ¥Ö¥¸¥§¥¯¥È¤Ø¤Î°ìÈÌŪ¤Ê¥Ý¥¤¥ó¥¿¤Ç¤¹¡¥

Variable: const lt_dlsymlist * lt_preloaded_symbols

lt_symbol¹½Â¤ÂΤÎÇÛÎó¤Ç¡¤¥×¥í¥°¥é¥à¤Ë¥ê¥ó¥¯¤µ¤ì¤ë¡¤¥×¥ê¥í¡¼¥É¤µ ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥·¥ó¥Ü¥ë¤òɽ¸½¤·¤Þ¤¹¡¥¤½¤ì¤¾¤ì¤Î‘-dlpreloaded’¥Õ¥¡ ¥¤¥ë¤ËÂФ·¡¤¥Õ¥¡¥¤¥ë¤Îname¤òÍѤ¤¤¿Í×ÁǤȡ¤0¤Î address¤¬¤¢¤ê¡¤¤³¤Î¥Õ¥¡¥¤¥ë¤«¤é¥¨¥¯¥¹¥Ý¡¼¥È¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î¥·¥ó¥Ü ¥ë¤¬Â³¤­¤Þ¤¹¡¥¼Â¹Ô·Á¼°¼«¿È¤ËÂФ·¡¤ÆÃÊ̤Î̾Á°@PROGRAM@¤¬»ÈÍѤµ¤ì¤Þ¤¹¡¥ ºÇ¸å¤ÎÍ×ÁǤϡ¤name¤È0¤Îaddress¤ò»ý¤Á¤Þ¤¹¡¥

¥É¥ëµ­¹æ¤Î¤è¤¦¤Ê¡¤ANSI C¤Ç¤ÏÍ­¸ú¤Ç¤Ï¤Ê¤¤¼±Ê̻Ҥòµö²Ä¤¹¤ë¥³¥ó¥Ñ¥¤¥é¤â¤¢ ¤ê¤Þ¤¹¡¥libtool¤ÏANSI C¤ÇÍ­¸ú¤Ê¥·¥ó¥Ü¥ë(ºÇ½é¤¬ASCIIʸ»ú¤Þ¤¿¤Ï¥¢¥ó¥À¡¼ ¥¹¥³¥¢¤Ç¡¤¥¼¥í¸Ä°Ê¾å¤ÎASCIIʸ»ú¡¤¿ô»ú¡¤¤½¤·¤Æ¥¢¥ó¥À¡¼¥¹¥³¥¢¤¬Â³¤¯¤â¤Î) ¤Î¤ßǧ¼±¤¹¤ë¤Î¤Ç¡¤ÈóASCII¥·¥ó¥Ü¥ë¤Ïlt_preloaded_symbols¤Ë½Ð¸½¤· ¤Þ¤»¤ó¡¥