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


9.1 dlopen¤Î¤¿¤á¤Î¥â¥¸¥å¡¼¥ë¤Î¥Ó¥ë¥É

¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤Ï¡¤¥×¥í¥°¥é¥à¥·¥ó¥Ü¥ë¤òdlsym(¤Þ¤¿¤Ï ¤½¤ÎÅù²Á)´Ø¿ô¤òÍѤ¤¤Æ¥À¥¤¥Ê¥ß¥Ã¥¯¤Ë²ò·è¤¹¤ë¤¿¤á¤Ë¡¤ÆÃÊ̤ËÀë¸À¤¹¤ëɬÍ× ¤¬¤¢¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥

libtool¤Ï¡¤‘-export-dynamic’¤È‘-module’¥ê¥ó¥¯¥Õ¥é¥°¤òÄ󶡤· (see Link mode)¡¤¤½¤ì¤Ï¤³¤ÎÀë¸À¤ò¹Ô¤¤¤Þ¤¹¡¥Â¾¤Î¥â¥¸¥å¡¼¥ë¤ädlopen ¤µ¤ì¤Æ¤¤¤ëlibtool¥é¥¤¥Ö¥é¥ê¤òdlopen¤¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ò¥ê ¥ó¥¯¤¹¤ë¾ì¹ç¡¤¤³¤ì¤é¤Î¥Õ¥é¥°¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

Î㤨¤Ð¡¤¸å¤Ç¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ëdlopen¤µ¤ì¤ë¶¦Í­¥é¥¤¥Ö¥é¥ê libhello¤ò¥Ó¥ë¥É¤·¤¿¤¤¾ì¹ç¡¤Â¾¤Î¥ê¥ó¥¯¥ª¥×¥·¥ç¥ó¤Ë ‘-module’¤ò²Ã¤¨¤Þ¤¹¡¥

burger$ libtool --mode=link gcc -module -o libhello.la foo.lo \
                hello.lo -rpath /usr/local/lib -lm
burger$

¼Â¹Ô·Á¼°¤«¤é¤Î¥·¥ó¥Ü¥ë¤¬¡¤dlopen¤·¤¿¤¤¥é¥¤¥Ö¥é¥ê¤Î̤²ò·è¤Î»²¾È ¤òËþ­¤µ¤»¤ëɬÍפ¬¤¢¤ë¾ì¹ç¡¤¥Õ¥é¥°‘-export-dynamic’¤ò»ÈÍѤ¹¤ëɬÍ× ¤¬¤¢¤ê¤Þ¤¹¡¥dlopen¤ò¸Æ¤Ó½Ð¤¹¼Â¹Ô·Á¼°¤ò¥ê¥ó¥¯¤¹¤ë¤È¤­¡¤ ‘-export-dynamic’ ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥

burger$ libtool --mode=link gcc -export-dynamic -o hell-dlopener main.o
burger$