Next: Linking libraries, Up: Using libtool [Contents][Index]
¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤«¤é¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤¿¤á¡¤¥³¥ó¥Ñ¥¤¥é¤Ï‘-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¤¬¤½¤Î½ÐÎϤòÇË´þ¤·¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥ ¤³¤ì¤Ï¡¤¥³¥ó¥Ñ¥¤¥é¤Î·Ù¹ð¤¬¤¦¤ë¤µ¤¯½ÅÊ£¤·¤Ê¤¤¤¿¤á¤Ë¹Ô¤ï¤ì¤Þ¤¹¡¥