Next: , Previous: Linking libraries, Up: Using libtool   [Contents][Index]


3.3 ¼Â¹Ô·Á¼°¤Î¥ê¥ó¥¯

¥é¥¤¥Ö¥é¥ê¤ò¼Â¹Ô·Á¼°¤È¥ê¥ó¥¯¤¹¤ëÁ°¤Ë¡¤¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë(¹±µ×Ū¤Ê ¾ì½ê¤Ë¤½¤ì¤òÇÛÃÖ¤¹¤ë)¾ì½ê¤òÁªÂò¤·¤¿¾ì¹ç¡¤¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Ëlibtool¤ò»ÈÍÑ ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡¥¥é¥¤¥Ö¥é¥ê¤Î°ÌÃÖ¤ò»ØÄꤹ¤ë¤¿¤á¡¤Ã±½ã¤ËŬÀÚ¤Ê ‘-L’¤È‘-l’¥Õ¥é¥°¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥

¥·¥¹¥Æ¥à¤Î¥ê¥ó¥«¤Ë¤è¤Ã¤Æ¤Ï¡¤·ë²Ì¤È¤·¤ÆÀ¸¤¸¤ë¼Â¹Ô·Á¼°¤Ë¡¤¶¦Í­¥é¥¤¥Ö¥é¥ê ¤Î´°Á´¤Ê¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÉ乿²½¤ò¶¯Íפ¹¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥libtool¤Ï¡¤¹± µ×Ū¤Ê¥Ç¥£¥ì¥¯¥È¥ê̾¤Î¤ß¤ò¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¼Â¹Ô·Á¼°¤Ë½ñ¤­¹þ¤à¤³¤È¤ò³Î ¼Â¤Ë¤¹¤ë¤¿¤á¡¤ÆÃÊ̤ÊËâË¡¤Ç¤³¤ÎÀ߷ץߥ¹¤Ë´Ø¤·¤ÆÆ°ºî¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

¤³¤Î¥Ð¥°¤Î½ÅÍ×À­¤Ï¸«Íî¤È¤·¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡¥¤½¤ì¤Ë¤è¤ë¥×¥í¥°¥é¥à¤Î˽Áö¤Ï ÌÀÇò¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤½¤ì¤Ï¥»¥­¥å¥ê¥Æ¥£¥Û¡¼¥ë¤òºîÀ®¤·¡¤¤µ¤é¤Ë°­¤¤¤³¤È¤Ë ¤Ï¡¤¥Ñ¥Ã¥±¡¼¥¸¤Î¥¤¥ó¥¹¥È¡¼¥ë¸å¤Ë¥é¥¤¥Ö¥é¥ê¥½¡¼¥¹¥³¡¼¥É¤òÊÔ½¸¤·¤¿¾ì¹ç¡¤ ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¥×¥í¥°¥é¥à¤Îưºî¤òÊѹ¹¤·¤Æ¤·¤Þ¤¦¤Ç¤·¤ç¤¦¡ª

¤½¤Î¤¿¤á¡¤¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëÁ°¤Ë¥é¥¤¥Ö¥é¥ê¤È¥×¥í¥°¥é¥à¤ò¥ê¥ó¥¯¤µ¤»¤¿¤¤¾ì ¹ç¡¤¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Ëlibtool¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¥é¥¤¥Ö¥é¥ê¤È¥ê¥ó¥¯¤¹¤ë¸Å¤¤ÊýË¡¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ë ¤Ê¤ê¤Þ¤¹¡¥

burger$ gcc -g -O -o hell.old main.o libhello.a -lm
burger$

libtool¤ÎÊýË¡¤Ï¡¤¤Û¤È¤ó¤ÉƱ¤¸¤Ç¤¹2(see Link mode)¡¥

a23$ libtool --mode=link gcc -g -O -o hell main.o libhello.la -lm
gcc -g -O -o hell main.o ./.libs/libhello.a -lm
a23$

¿¿¼Â¤È¤·¤Æ¤Ï¤¢¤Þ¤ê¤Ëñ½ã¤Ë¸«¤¨¤Þ¤¹¡¥libtool¤¬¹Ô¤¦¤³¤È¤Ï¡¤ libhello.la¤ò./.libs/libhello.a¤ËÊÑ´¹¤¹¤ë¤³¤È¤¬ ¤¹¤Ù¤Æ¤Ç¤¹¤¬¡¤‘a23’¤Ë¤Ï¶¦Í­¥é¥¤¥Ö¥é¥ê¤¬¤Ê¤¤¤³¤È¤ò˺¤ì¤Ê¤¤¤Ç¤¯¤À¤µ ¤¤¡¥

burger’¤Ç¤Ï¡¤¾õ¶·¤¬°Û¤Ê¤ê¤Þ¤¹¡¥

burger$ libtool --mode=link gcc -g -O -o hell main.o libhello.la -lm
gcc -g -O -o .libs/hell main.o -L./.libs -R/usr/local/lib -lhello -lm
creating hell
burger$

¤µ¤Æ¡¤libhello.la¤¬´û¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¡¤¿·¤·¤¤¥× ¥í¥°¥é¥à¤ò¤½¤ì¤È¥ê¥ó¥¯¤·¤¿¤¤¤È¤·¤Þ¤¹¡¥¼«Ê¬¤Ç¤½¤ì¤¬¤¢¤ë¾ì½ê¤òõ¤·¡¤°Ê²¼ ¤ò¼Â¹Ô¤·¤Þ¤¹¡¥

burger$ gcc -g -O -o test test.o -L/usr/local/lib -lhello

¤·¤«¤·¡¤/usr/local/lib¤¬É¸½à¤Î¥é¥¤¥Ö¥é¥ê¸¡º÷¥Ñ¥¹¤Ë̵¤¤¾ì¹ç¡¤ test¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡¥¤·¤«¤·¡¤´û¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ ¤¤¤ëlibtool¥é¥¤¥Ö¥é¥ê¤È¥ê¥ó¥¯¤¹¤ë¤¿¤álibtool¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¤¤½¤ì¤Ï The Right Thing (TM) (Àµ²ò)¤È¤Ê¤ê¤Þ¤¹¡¥

burger$ libtool --mode=link gcc -g -O -o test test.o /usr/local/lib/libhello.la
gcc -g -O -o .libs/test test.o -Wl,--rpath
-Wl,/usr/local/lib /usr/local/lib/libhello.a -lm
creating test
burger$

libtool¤¬¡¤¥é¥¤¥Ö¥é¥êlibhello.la¤¬°Í¸¤·¤Æ¤¤¤ë‘-lm’ƱÍÍ¡¤É¬Í×¤Ê¥é ¥ó¥¿¥¤¥à¥Ñ¥¹¥Õ¥é¥°¤òÄɲ䷤Ƥ¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥¤¤¤¤¤Ç¤¹¤Í¡¤¤Õ¤Ã ¤Õ¡©

libtool¤¬¥é¥Ã¥Ñ¡¼¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤Î¤Ç¡¤¥¤¥ó¥¹¥È¡¼¥ë¤È¥Ç¥Ð¥Ã¥°¤Ë¤â libtool¤ò»ÈÍѤ·¤¿¤Û¤¦¤¬¤¤¤¤¤Ç¤·¤ç¤¦¡¥¤·¤«¤·¡¤¥×¥í¥°¥é¥à¤Ï¥¤¥ó¥¹¥È¡¼¥ë ¤µ¤ì¤Æ¤¤¤Ê¤¤libtool¥é¥¤¥Ö¥é¥ê¤Ë¤ÏÁ´¤¯°Í¸¤·¤Ê¤¤¤Î¤Ç¡¤¥é¥Ã¥Ñ¡¼¥¹¥¯¥ê¥× ¥È¤òÍѤ¤¤Ê¤¤¾ì¹ç¤Ç¤â¤ª¤½¤é¤¯Í­ÍѤǤ·¤ç¤¦¡¥¤³¤Î¾ì¹ç¤Ï¡¤¥é¥Ã¥Ñ¡¼¥¹¥¯¥ê¥× ¥È¤ÎºîÀ®¤òÈò¤±¤ë¤¿¤á¡¤¤ª¤½¤é¤¯¤è¤ê¸­¤¯libtool¤òºîÀ®¤Ç¤­¤¿¤Ç¤·¤ç¤¦¤¬¡¤ ¤³¤ì¤ÏÆÉ¼Ô¤Î±é½¬¤È¤·¤Æ»Ä¤·¤Æ¤ª¤­¤Þ¤¹¡¥

¼Â¹Ô·Á¼°hell¤Ï¡¤¼ÂºÝ¤Ë¤Ï.libs¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Ë ºîÀ®¤µ¤ì¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥¤½¤·¤Æ¡¤¥é¥Ã¥Ñ¡¼¥¹¥¯¥ê¥×¥È¤Ï¸½ºß¤Î¥Ç¥£ ¥ì¥¯¥È¥ê¤ËºîÀ®¤µ¤ì¤Þ¤¹¡¥

NetBSD 1.2¤Ç¤Ï¡¤libtool¤Ï‘-R/usr/local/lib’¥³¥ó¥Ñ¥¤¥é¥Õ¥é¥°¤ò»ÈÍÑ ¤·¤Æ¡¤libhello¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¥¤¥ó¥¹¥È¡¼¥ë¤òÉ乿²½¤·¤Þ¤¹¡¥¤½¤· ¤Æ¡¤¥é¥Ã¥Ñ¡¼¥¹¥¯¥ê¥×¥È¤Ï¡¤Àµ¤·¤¯¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¤Þ¤Ç¼Â¹Ô·Á¼°¤¬Àµ¤·¤¤ (./.libs¤Ë¤¢¤ë)¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò¸«¤Ä¤±¤ë¤³¤È¤òÊݾڤ·¤Þ ¤¹¡¥

Æó¤Ä¤Î°Û¤Ê¤ë¥×¥í¥°¥é¥à¤òÈæ³Ó¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡¥

burger$ time ./hell.old
Welcome to GNU Hell!
** This is not GNU Hello.  There is no built-in mail reader. **
        0.21 real         0.02 user         0.08 sys
burger$ time ./hell
Welcome to GNU Hell!
** This is not GNU Hello.  There is no built-in mail reader. **
        0.63 real         0.09 user         0.59 sys
burger$

¥é¥Ã¥Ñ¡¼¥¹¥¯¥ê¥×¥È¤Ï¼Â¹Ô¤Ë¤«¤Ê¤ê»þ´Ö¤¬¤«¤«¤ê¤Þ¤¹¤¬¡¤¶¦Í­¥é¥¤¥Ö¥é¥ê¤¬¥¤ ¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤â¡¤¾¯¤Ê¤¯¤È¤â·ë²Ì¤ÏÀµ¤·¤¯¤Ê¤ê¤Þ¤¹¡¥

¤½¤Î¤¿¤á¡¤¶¦Í­¥é¥¤¥Ö¥é¥ê¤¬¤â¤¿¤é¤·¤¿¡¤Á´ÂÎŪ¤Ê¥¹¥Ú¡¼¥¹ºï¸º¤Ï¤Ï¤É¤¦¤Ê¤Ã ¤Æ¤¤¤ë¤Î¤Ç¤·¤ç¤¦¡©

burger$ ls -l hell.old libhello.a
-rwxr-xr-x  1 gord  gord  15481 Nov 14 12:11 hell.old
-rw-r--r--  1 gord  gord   4274 Nov 13 18:02 libhello.a
burger$ ls -l .libs/hell .libs/libhello.*
-rwxr-xr-x  1 gord  gord  11647 Nov 14 12:10 .libs/hell
-rw-r--r--  1 gord  gord   4274 Nov 13 18:44 .libs/libhello.a
-rwxr-xr-x  1 gord  gord  12205 Nov 13 18:44 .libs/libhello.so.0.0
burger$

¤¦¡¼¤ó¡¤¤À¤á¤À¤Ê¤¢3¡¥¤ª¤½¤é¤¯¡¤ »ä¤Ï¤³¤Î¥×¥í¥¸¥§¥¯¥È¤òÇ˲õ¤·¡¤ºîÀ®Ãæ¤Î¤æ¤ê¤«¤´¤ò¼è¤ê¾å¤²¤¿¤Û¤¦¤¬¤¤¤¤¤Ç ¤·¤ç¤¦¡¥

¼ÂºÝ¡¤¤½¤ì¤Ï½ÅÍפʤ³¤È¤ò¾ÚÌÀ¤·¤Æ¤¤¤Þ¤¹¡¥¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¤¤½¤ì¤¬(´Ø Ï¢¤¹¤ë)Ê£»¨¤µ¤Î¤¿¤á¡¤¥ª¡¼¥Ð¡¼¤Ø¥Ã¥É¤ò¤¬¤¢¤ê¤Þ¤¹¡¥¤³¤Î¾õ¶·¤Ç¤Ï¡¤¥À¥¤¥Ê ¥ß¥Ã¥¯¤Î²ÁÃͤÏ8¥­¥í¥Ð¥¤¥È¤Ç¡¤Êó½·¤ÏÌó4¥­¥í¥Ð¥¤¥È¤Ç¤¹¡¥¤½¤Î¤¿¤á¡¤¾¯¤Ê¤¯ ¤È¤âÆó¡¤»°¸Ä°Ê¾å¤Î¥×¥í¥°¥é¥à¤È¥ê¥ó¥¯¤¹¤ë¤Þ¤Ç¡¤¶¦Í­¤µ¤ì¤ë libhello¤ò°Ý»ý¤¹¤ë¤³¤È¤ÏÍøÅÀ¤Ë¤Ê¤ê¤Þ¤»¤ó¡¥


Footnotes

(2)

¤·¤«¤·¡¤¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ ¤¤¤Ê¤¤libtool¥é¥¤¥Ö¥é¥ê¤Ë¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Ë¡¤‘-L’¤ä‘-l’¥Õ¥é¥° ¤Î»ÈÍѤÏÈò¤±¤¿¤Û¤¦¤¬¤¤¤¤¤Ç¤·¤ç¤¦¡¥‘.la’¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë¡¤ ../intl/libintl.la¤Î¤è¤¦¤ÊÁêÂХѥ¹¤Î¤ß¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡¥¤³¤ì ¤Ï¡¤¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¶¦Í­¥é¥¤¥Ö¥é¥ê¤ËÂФ·¥ê¥ó¥¯¤¹¤ë¤È¤­¡¤¤¢¤é¤æ ¤ëÛ£Ëæ¤µ¤ò¼è¤ê½ü¤¯¤¿¤á·èÄꤵ¤ì¤¿À߷פǤ¹¡¥

(3)

ÌõÃí¡§¸¶Ê¸¤Ï¡¤Well, that sucks.


Next: , Previous: Linking libraries, Up: Using libtool   [Contents][Index]