Next: , Up: Using libtool   [Contents][Index]


3.1 ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ÎºîÀ®

¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤«¤é¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤¿¤á¡¤¥³¥ó¥Ñ¥¤¥é¤Ï‘-c’ ¥Õ¥é¥°(¤È¤½¤Î¾¤ÎɬÍפʤ¢¤é¤æ¤ë¥Õ¥é¥°)¤È¤È¤â¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡¥

burger$ gcc -g -O -c main.c
burger$

¾åµ­¤Î¥³¥ó¥Ñ¥¤¥é¥³¥Þ¥ó¥É¤Ï¡¤¥½¡¼¥¹¥Õ¥¡¥¤¥ëmain.c¤«¤é¥ª¥Ö¥¸¥§¥¯ ¥È¥Õ¥¡¥¤¥ëmain.o¤òÀ¸À®¤·¤Þ¤¹¡¥

¤Û¤È¤ó¤É¤Î¥é¥¤¥Ö¥é¥ê¥·¥¹¥Æ¥à¤Ç¤Ï¡¤¥¹¥¿¥Æ¥£¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤Î°ìÉô¤È¤Ê¤ë¥ª ¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤Ï¡¤¼Â¹Ô²Äǽ¤Ê·Á¼°¤Ë¥ê¥ó¥¯¤µ¤ì¤ë¥ª¥Ö¥¸¥§ ¥¯¥È¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤ÈƱ¤¸¤¯¤é¤¤Ã±½ã¤Ç¤¹¡¥

burger$ gcc -g -O -c foo.c
burger$ gcc -g -O -c hello.c
burger$

¤·¤«¤·¡¤¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ïposition-independent code (PIC)¤Î¤ß¤«¤é ¥Ó¥ë¥É¤µ¤ì¤Þ¤¹¡¥¤½¤Î¤¿¤á¡¤É¸½à¤Îposition-dependent code¤Ç¤Ï¤Ê¤¯PIC¤òÀ¸ À®¤¹¤ë¤è¤¦¥³¥ó¥Ñ¥¤¥é¤ËÅÁ¤¨¤ë¤¿¤á¡¤ÆÃÄê¤Î¥Õ¥é¥°¤òÅϤ¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥

¤³¤ì¤¬¥é¥¤¥Ö¥é¥ê¼ÂÁõ¤Î¾ÜºÙ¤Ê¤Î¤Ç¡¤libtool¤Ï¸ÄÊ̤Î(‘.o’¤ÎÂå¤ï¤ê¤Ë ‘.lo’¤Ç½ª¤ï¤ë)¥é¥¤¥Ö¥é¥ê¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òÍѤ¤¤Æ¡¤Ê£»¨¤ÊPIC¥³ ¥ó¥Ñ¥¤¥é¥Õ¥é¥°¤ò±£Êä·¤Þ¤¹¡¥¶¦Í­¥é¥¤¥Ö¥é¥ê¤¬Ìµ¤¤(¤Þ¤¿¤Ï¡¤ÆÃÄê¤ÎPIC¥Õ¥é ¥°¤¬Ìµ¤¤)¥·¥¹¥Æ¥à¤Ç¤Ï¡¤¤³¤ì¤é¤Î¥é¥¤¥Ö¥é¥ê¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Ï“ɸ½à ¤Î”¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¤Ç¤¹¡¥

foo.c¤Èhello.c¤ËÂФ¹¤ë¥é¥¤¥Ö¥é¥ê¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òºî À®¤¹¤ë¤¿¤á¡¤Ã±½ã¤Ëɸ½à¤Î¥³¥ó¥Ñ¥¤¥ë¥³¥Þ¥ó¥É¤ò°ú¿ô¤È¤·¤Æ¡¤libtool¤ò¸Æ¤Ó ½Ð¤·¤Æ¤¯¤À¤µ¤¤(see Compile mode)¡¥

a23$ libtool --mode=compile gcc -g -O -c foo.c
gcc -g -O -c foo.c
echo timestamp > foo.lo
a23$ libtool --mode=compile gcc -g -O -c hello.c
gcc -g -O -c hello.c
echo timestamp > hello.lo
a23$

¤½¤ì¤¾¤ì¤Î¸Æ¤Ó½Ð¤·¤Ç¡¤libtool¤¬Æó¤Ä¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤ËÃí°Õ¤·¤Æ ¤¯¤À¤µ¤¤¡¥‘.lo’¥Õ¥¡¥¤¥ë¤Ï¥é¥¤¥Ö¥é¥ê¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¤¤½¤ì¤Ï¶¦Í­¥é¥¤ ¥Ö¥é¥ê¤Ë¥Ó¥ë¥É¤µ¤ì¡¤‘.o’¥Õ¥¡¥¤¥ë¤Ïɸ½àŪ¤Ê¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Ç ¤¹¡¥‘a23’¤Ç¤Ï¡¤¥¹¥¿¥Æ¥£¥Ã¥¯¥é¥¤¥Ö¥é¥ê¤Î¤ß¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¤ ¥é¥¤¥Ö¥é¥ê¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥¿¥¤¥à¥¹¥¿¥ó¥×¤Î¤ß¤Ç¤¹¡¥

¶¦Í­¥é¥¤¥Ö¥é¥ê¤Î¤¢¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¤¥é¥¤¥Ö¥é¥ê¥ª¥Ö¥¸¥§¥¯¥È¤Èɸ½à¥ª¥Ö¥¸¥§ ¥¯¥È¤¬°Û¤Ê¤ë¤è¤¦¤Ë¡¤libtool¤ÏPICÀ¸À®¥Õ¥é¥°¤ò¥³¥ó¥Ñ¥¤¥ë¥³¥Þ¥ó¥É¤Ë¼«Æ°Åª ¤ËÁÞÆþ¤·¤Þ¤¹¡¥

burger$ libtool --mode=compile gcc -g -O -c foo.c
gcc -g -O -c -fPIC -DPIC foo.c
mv -f foo.o foo.lo
gcc -g -O -c foo.c >/dev/null 2>&1
burger$ libtool --mode=compile gcc -g -O -c hello.c
gcc -g -O -c -fPIC -DPIC hello.c
mv -f hello.o hello.lo
gcc -g -O -c hello.c >/dev/null 2>&1
burger$

ÆóÈÖÌܤ˼¹Ԥµ¤ì¤ëGCC¤¬¤½¤Î½ÐÎϤòÇË´þ¤·¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥ ¤³¤ì¤Ï¡¤¥³¥ó¥Ñ¥¤¥é¤Î·Ù¹ð¤¬¤¦¤ë¤µ¤¯½ÅÊ£¤·¤Ê¤¤¤¿¤á¤Ë¹Ô¤ï¤ì¤Þ¤¹¡¥