Previous: C++ Compiler, Up: Compilers and Preprocessors [Contents][Index]
Autoconf¤ÎFortran¥µ¥Ý¡¼¥È¤Ï¡¤Æó¤Ä¤Î¥«¥Æ¥´¥ê¤Ëʬ¤±¤é¤ì¤Þ¤·¤¿¡¥¤³¤ì¤Þ¤Ç¤Î
Fortran 77¥Þ¥¯¥í(F77
)¤È¡¤¸½ºß¤ÎFortram¥Þ¥¯¥í(FC
)¤Ç¤¹¡¥Á°¼Ô
¤ÏÅÁÅýŪ¤ÊFortram 77¥³¡¼¥É¤òÁÛÄꤷ¤Æ¤¤¤Æ¡¤F77
¡¤FFLAGS
¡¤¤½
¤·¤ÆFLIBS
¤È¤¤¤Ã¤¿½ÐÎÏÊÑ¿ô¤¬¤¢¤ê¤Þ¤¹¡¥¸å¼Ô¤Ï¡¤¤è¤ê¿·¤·¤¤Fortran¤Î
ɸ½à¤Î¸µ¤Ç¥³¥ó¥Ñ¥¤¥ë²Äǽ(¤Þ¤¿¤Ïɬ¿Ü)¤Ç¤¢¤ë¡¤¤è¤ê¿·¤·¤¤¥×¥í¥°¥é¥à¤òÁÛÄꤷ
¤Æ¤¤¤Æ¡¤FC
¡¤FCFLAGS
¡¤¤½¤·¤ÆFCLIBS
¤È¤¤¤Ã¤¿½ÐÎÏÊÑ¿ô¤¬
¤¢¤ê¤Þ¤¹¡¥
Æó¤Ä¤Î¿·¤·¤¤¥Þ¥¯¥íAC_FC_SRCEXT
¤ÈAC_FC_FREEFORM
(°Ê²¼¤ò»²¾È)
°Ê³°¤Ç¤Ï¡¤FC
¤ÈF77
¤Î¥Þ¥¯¥í¤Îưºî¤Ï¤Û¤È¤ó¤ÉƱ¤¸¤Ê¤Î¤Ç¡¤¤³¤Î
¥»¥¯¥·¥ç¥ó¤Ç¤Þ¤È¤á¤ÆÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡¥
»ÈÍѤ¹¤ëFortran 77¥³¥ó¥Ñ¥¤¥é¤ò·èÄꤷ¤Þ¤¹¡¥F77
¤¬´Ä¶ÊÑ¿ô¤Ç¤Þ¤ÀÀßÄê
¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤g77
¡¤f77
¡¤¤½¤·¤Æ¤½¤Î¾¤Î̾Á°¤òÄ´ºº¤·¤Þ¤¹¡¥
¸«¤Ä¤«¤Ã¤¿¥³¥ó¥Ñ¥¤¥é̾¤ò¡¤½ÐÎÏÊÑ¿ôF77
¤ËÀßÄꤷ¤Þ¤¹¡¥
¤·¤«¤·¡¤¤³¤Î¥Þ¥¯¥í¤Ï¥ª¥×¥·¥ç¥ó°ú¿ô¤òÍѤ¤¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¡¤»ØÄꤹ¤ë
¾ì¹ç¤Ï¡¤¸¡º÷¤¹¤ëFortran 77¥³¥ó¥Ñ¥¤¥é¤ò¥¹¥Ú¡¼¥¹¤Ç¶èÀڤ俥ꥹ¥È¤Ë¤¹¤ëɬÍ×
¤¬¤¢¤ê¤Þ¤¹¡¥¤³¤ì¤Ç¡¤¥æ¡¼¥¶¤¬Fortran 77¥³¥ó¥Ñ¥¤¥é¤ËÂФ¹¤ëÂå¤ï¤ê¤Î¸¡º÷¥ê¥¹
¥È¤ò»ØÄꤹ¤ëµ¡²ñ¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡¥Î㤨¤Ð¡¤¥Ç¥Õ¥©¥ë¥È¤Î½ç½ø¤¬¤¤¤ä¤Ê¾ì¹ç¤Ï¡¤
°Ê²¼¤Î¤è¤¦¤Ë¤·¤ÆAC_PROG_F77
¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¤¹¡¥
AC_PROG_F77(fl32 f77 fort77 xlf g77 f90 xlf90)
g77
(GNU Fortran 77¥³¥ó¥Ñ¥¤¥é)¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¤
AC_PROG_F77
¤Ï¥·¥§¥ëÊÑ¿ôG77
¤ò‘yes’¤ËÀßÄꤷ¤Þ¤¹¡¥½ÐÎÏÊÑ
¿ôFFLAGS
¤¬´Ä¶ÊÑ¿ô¤ÇÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤g77
¤ËÂФ·¤Æ
‘-g -O2’(‘-g’¤ò¼õ¤±Æþ¤ì¤Ê¤¤g77
¤Ç¤Ï‘-O2’)¤òÀßÄꤷ¡¤
¾¤ÎFortran 77¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï‘-g’¤òÀßÄꤷ¤Þ¤¹¡¥
»ÈÍѤ¹¤ëFortran¥³¥ó¥Ñ¥¤¥é¤ò·èÄꤷ¤Þ¤¹¡¥FC
¤¬´Ä¶ÊÑ¿ô¤Ç¤Þ¤ÀÀßÄꤵ¤ì
¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤dialect
¤¬¸¡º÷¤·¤Æ¤¤¤ëFortran dialect²¿¤«¤ò¼¨¤¹¥Ò¥ó
¥È¤Ë¤Ê¤ê¤Þ¤¹¡¥¥Ç¥Õ¥©¥ë¥È¤È¤·¤Æ¡¤ÍøÍѲÄǽ¤Êdialect¤ÎºÇ¤â¿·¤·¤¤¤â¤Î¤ò¸¡º÷
¤·¤Þ¤¹¡¥¸«¤Ä¤«¤Ã¤¿¥³¥ó¥Ñ¥¤¥é̾¤ò½ÐÎÏÊÑ¿ôFC
¤ËÀßÄꤷ¤Þ¤¹¡¥
¥Ç¥Õ¥©¥ë¥È¤Ç¡¤¤è¤ê¿·¤·¤¤dialect¤¬¤è¤ê¸Å¤¤dialect¤ËÂå¤ï¤Ã¤ÆÁªÂò¤µ¤ì¤Þ¤¹¤¬¡¤
dialect
¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¤»ØÄꤵ¤ì¤Æ¤¤¤ëdialect¤Ç»Ï¤Þ¤ë¡¤¤è¤ê
¸Å¤¤dialect¤¬ÁªÂò¤µ¤ì¤Þ¤¹¡¥dialect
¤Ï¡¤¸½ºßFortran 77¡¤Fortran 90¡¤
¤Þ¤¿¤ÏFortran 95¤¬²Äǽ¤Ç¤¹¡¥¤·¤«¤·¡¤¤³¤ì¤ÏÁªÂò¤µ¤ì¤ë¥³¥ó¥Ñ¥¤¥é¤Î̾
Á°¤Î¥Ò¥ó¥È(Î㤨¤Ð¡¤f90
¤Þ¤¿¤Ïf95
)¤Ë¤Ê¤ë¤À¤±¤Ç¡¤ÆÃÄê¤Î¸À¸ì
¤Îɸ½à¤ò¼ÂºÝ¤Ë¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤³¤È¤Ø¤ÎÊݾڤϻî¤ß¤Þ¤»¤ó¡¥¤³¤Î¤¿¤á¡¤
dialect
¥ª¥×¥·¥ç¥ó¤òÈò¤±¡¤AC_PROG_FC
¤À¤±¤òºÇ¤â¿·¤·¤¤Fortran
ɸ½à¤Ë¸ß´¹À¤Î¤¢¤ë¥³¡¼¥ÉÂФ·¤Æ»ÈÍѤ·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡¥
¤Þ¤¿¡¤¤³¤Î¥Þ¥¯¥í¤Ï¡¤ºÇ½é¤Î¥ª¥×¥·¥ç¥ó°ú¿ô¤ò»ØÄꤷ¤Æ¸Æ¤Ó½Ð¤µ¤ì¤ë¾ì¹ç¡¤¤½¤ì
¤Ï¡¤AC_PROG_F77
¤ÈƱÍͤˡ¤¸¡º÷¤¹¤ëFortran¥³¥ó¥Ñ¥¤¥é¤ò¥¹¥Ú¡¼¥¹¤Çʬ
Î¥¤·¤¿¥ê¥¹¥È¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
½ÐÎÏÊÑ¿ôFCFLAGS
¤¬´Ä¶ÊÑ¿ô¤ÇÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤GNU g77
¤Ë
ÂФ·¤Æ¤Ï¤½¤ì¤ò-g -02¤Ë(¤Þ¤¿¤Ï¡¤g77
¤¬-g¤ò¼õ¤±Æþ
¤ì¤Ê¤¤¤È¤³¤í¤Ç¤Ï-O2¤Ë)ÀßÄꤷ¤Þ¤¹¡¥¤½¤ì°Ê³°¤Ç¤Ï¡¤¤¹¤Ù¤Æ¤ÎFortran
¥³¥ó¥Ñ¥¤¥é¤ËÂФ·¡¤FCFLAGS
¤ò-g¤ËÀßÄꤷ¤Þ¤¹¡¥
Fortran¥³¥ó¥Ñ¥¤¥é¤¬¡¤¥ª¥×¥·¥ç¥ó‘-c’¤È‘-o’¤òƱ»þ¤Ë¤ò¼õ¤±Æþ¤ì¤ë
¤«¤É¤¦¤«¥Æ¥¹¥È¤·¡¤¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¤¤½¤ì¤¾¤ì
F77_NO_MINUS_C_MINUS_O
¤Þ¤¿¤ÏFC_NO_MINUS_C_MINUS_O
¤òÄêµÁ¤·
¤Þ¤¹¡¥
°Ê²¼¤Î¥Þ¥¯¥í¤Ï¡¤Fortran¥³¥ó¥Ñ¥¤¥é¤ÎÆÃħ¤òÄ´ºº¤·¤Þ¤¹¡¥¤³¤³¤Ç¥ê¥¹¥È¥¢¥Ã¥×
¤µ¤ì¤Æ¤¤¤Ê¤¤ÆÃħ¤òÄ´ºº¤¹¤ë¤¿¤á¤Ë¡¤¸½ºß¤Î¸À¸ì(see Language Choice)¤¬
Fortran 77¤Þ¤¿¤ÏFortran¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤³¤È¤òAC_LANG(Fortran 77)
¤äAC_LANG(Fortran)
¤ÇºÇ½é¤Ë³Îǧ¤·¡¤AC_COMPILE_IFELSE
(see Running the Compiler)¤äAC_RUN_IFELSE
(see Run Time)
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
Fortran¥×¥í¥°¥é¥à¤ä¶¦Í¥é¥¤¥Ö¥é¥ê¤ò¤¦¤Þ¤¯¥ê¥ó¥¯¤¹¤ë¤¿¤á¤ËɬÍפÊ
Fortran¤Î¥¤¥ó¥È¥ê¥ó¥·¥Ã¥¯¤È¥é¥ó¥¿¥¤¥à¥é¥¤¥Ö¥é¥ê(Fortran intrinsic
and run-time libraries)¤ËÂФ·¤Æ¡¤¥ê¥ó¥«¥Õ¥é¥°(Î㤨¤Ð‘-L’ ¤È
‘-l’)¤ò·èÄꤷ¤Þ¤¹¡¥½ÐÎÏÊÑ¿ô FLIBS
¤äFCLIBS
¤Ë¤Ï¡¤¤³¤ì¤é
¤Î¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤Þ¤¹(¤½¤ì¤é¤Ï¥ê¥ó¥¯»þ¤ËLIBS
¤Î¸å¤Ë´Þ¤á¤ë¤Ù¤¤Ç¤¹)¡¥
¤³¤Î¥Þ¥¯¥í¤Ï¡¤Ã±°ì¤Î¥×¥í¥°¥é¥à¤ä¶¦Í¥é¥¤¥Ö¥é¥ê¤Ë¡¤Î㤨¤Ð¡¤C++¤ÈFortran¤Î ¥½¡¼¥¹¥³¡¼¥É¤òº®ºß¤µ¤»¤ëɬÍפ¬¤¢¤ë¤È¤ÍøÍѤµ¤ì¤Þ¤¹(see Mixing Fortran 77 With C and C++ in GNU Automake)¡¥
Î㤨¤Ð¡¤C++¤ÈFortran¥³¥ó¥Ñ¥¤¥é¤ÇÀ¸À®¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¡¤¤ª¸ß¤¤ ¤Ë¥ê¥ó¥¯¤¹¤ëɬÍפ¬¤¢¤ë¤È¤¡¤¥ê¥ó¥¯¤Ë¤ÏC++¥³¥ó¥Ñ¥¤¥é/¥ê¥ó¥«¤¬»ÈÍѤµ¤ì¤ë¤Ï ¤º¤Ç¤¹(C++ÆÃͤΤâ¤Î¤Ï¡¤¥ê¥ó¥¯»þ¤Ë¥°¥í¡¼¥Ð¥ë¥³¥ó¥¹¥È¥é¥¯¥¿¡¤¥¤¥ó¥¹¥¿¥ó¥¹ ¥Æ¥ó¥×¥ì¡¼¥È¡¤Îã³°½èÍýÅù¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬À¸¤¸¤ë¤¿¤á¤Ç¤¹)¡¥
¤·¤«¤·¡¤Fortran¤Î¥¤¥ó¥È¥ê¥ó¥·¥Ã¥¯¤È¥é¥ó¥¿¥¤¥à¥é¥¤¥Ö¥é¥ê¤â¥ê¥ó¥¯¤¹¤ëɬÍ× ¤¬¤¢¤ê¤Þ¤¹¤¬¡¤C++¥³¥ó¥Ñ¥¤¥é/¥ê¥ó¥«¤Ï¡¤¤³¤ì¤é¤ÎFortran¥é¥¤¥Ö¥é¥ê¤òÄɲä¹ ¤ëÊýË¡¤ò¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏÃΤäƤ¤¤Þ¤»¤ó¡¥¤½¤Î¤¿¤á¡¤¤³¤ì¤é¤ÎFortran¥é¥¤¥Ö¥é ¥ê¤ò·èÄꤹ¤ë¥Þ¥¯¥í¤¬ºîÀ®¤µ¤ì¤Þ¤·¤¿¡¥
¥Þ¥¯¥íAC_F77_DUMMY_MAIN
/AC_FC_DUMMY_MAIN
¤ä
AC_F77_MAIN
/AC_FC_MAIN
¤Ï¡¤Fortran¤ÇC/C++¤Ë¥ê¥ó¥¯¤¹¤ëɬÍפ¬
¤¢¤ë¤È¤¤â¤ª¤½¤é¤¯É¬ÍפǤ¹¡¥°Ê²¼¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
¿¤¯¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¤AC_F77_LIBRARY_LDFLAGS
¤ä
AC_FC_LIBRARY_LDFLAGS
¤Ç¸«¤Ä¤«¤ëFortran¥é¥¤¥Ö¥é¥ê¤Ï¡¤Fortran I/O¤Î
¤è¤¦¤Ê¤â¤Î¤ò½é´ü²½¤·¤¿¤ê¡¤¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¡¤(¤¤¤ï¤æ¤ë)
MAIN__
¤Î¤è¤¦¤Ê̾Á°¤ò»ý¤Ä¥æ¡¼¥¶Ä󶡤Υ¨¥ó¥È¥ê¡¼´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¡¤ÆÈ
¼«¤Îmain
¥¨¥ó¥È¥ê¡¼´Ø¿ô¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡¥
AC_F77_DUMMY_MAIN
/AC_FC_DUMMY_MAIN
¤ä
AC_F77_MAIN
/AC_FC_MAIN
¥Þ¥¯¥í¤Ï¡¤¤³¤ÎÁê¸ßºîÍѤò°·¤¦ÊýË¡¤òÍý
²ò¤·¤Þ¤¹¡¥
(I/O¤Ê¤É¤Ç¤Ï¤Ê¤¤)½ã¿è¤Ê¿ôÃÍ´Ø¿ô¤Î¤¿¤á¤ËFortran¤ò»ÈÍѤ·¤Æ¤¤¤ë¤È¤¡¤ÆÈ¼«¤Î
main
¤òÄ󶡤·¡¤Fortran¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤òÄä»ß¤·¤¿¤¤¤³¤È¤â¤è¤¯¤¢¤ê
¤Þ¤¹¡¥¤·¤«¤·¤³¤Î¾ì¹ç¤Ï¡¤¤¤¤¯¤Ä¤«¤Î¥·¥¹¥Æ¥à¤Ç¤Î¥ê¥ó¥¯¥¨¥é¡¼¤òÈò¤±¤ë¤¿¤á¡¤
¥À¥ß¡¼¤ÎMAIN__
¥ë¡¼¥Á¥ó¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¥
AC_F77_DUMMY_MAIN
¤äAC_FC_DUMMY_MAIN
¤Ï¡¤¤½¤Î¤è¤¦¤Ê¥ë¡¼¥Á¥ó
¤¬¥ê¥ó¥¯»þ¤ËÍ׵ᤵ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¡¤¤½¤·¤Æ¤½¤Î̾Á°¤¬²¿¤«¤ò¸¡½Ð¤·
¤Þ¤¹¡¥¥·¥§¥ëÊÑ¿ôF77_DUMMY_MAIN
¤äF77_DUMMY_MAIN
¤Ï¡¤²ò·èÊýË¡
¤¬¸«¤Ä¤«¤é¤Ê¤¤¤È¤¤Ïunknown
¡¤¤½¤Î¤è¤¦¤Ê¥À¥ß¡¼¤Îmain
¤¬ÉÔÍ×
¤Ê¤È¤¤Ïnone
¤È¤¤¤¦ÃͤòÊÝ»ý¤·¤Þ¤¹¡¥
¥Ç¥Õ¥©¥ë¥È¤Ç¡¤É¬Íפʾì¹ç¤Ï¡¤action-if-found¤Ï
F77_DUMMY_MAIN
¤äFC_DUMMY_MAIN
¤ò¤³¤Î¥ë¡¼¥Á¥ó̾(Î㤨¤Ð
MAIN__
)¤ËÄêµÁ¤·¤Þ¤¹¡¥[action-if-not-found]¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¥¨¥é¡¼
¤Ç½ªÎ»¤·¤Þ¤¹¡¥
Fortran¤È¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Ë¡¤É¬Íפʾì¹ç¤Ï¥À¥ß¡¼¤Îmain
¤òÄêµÁ¤¹¤ë¤¿¤á
¤Ë¡¤user¤ÎC/C++¥×¥í¥°¥é¥à¤Ç°Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥É¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤Ù¤¤Ç¤¹¡¥
#ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif
(Fortran 77¤Ç¤Ï¤Ê¤¯Fortran¤ËÂФ·¤Æ¤Ï¡¤F77
¤òFC
¤ÇÃÖ´¹¤·¤Æ²¼
¤µ¤¤¡¥)
¤³¤Î¥Þ¥¯¥í¤Ï¤ÏAC_F77_WRAPPERS
¤äAC_FC_WRAPPERS
¤«¤é¼«Æ°Åª¤Ë
¸Æ¤Ó½Ð¤µ¤ì¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥°ìÈÌŪ¤Ë¥Ç¥Õ¥©¥ë¥È¤Îưºî¤òÊѹ¹¤·¤¿¤¯
¤Ê¤¤¸Â¤ê¡¤ÌÀ¼¨Åª¤Ë¤Ë¸Æ¤Ó½Ð¤¹É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡¥
¾å¤ÇµÄÏÀ¤·¤¿¤è¤¦¤Ë¡¤Fortran¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¤Ä̾ï¤Îmain
¤ÎÂå¤ï¤ê¤Ë¡¤
(¤¤¤ï¤æ¤ë)MAIN__
¤È¸Æ¤Ð¤ì¤ë¥¨¥ó¥È¥ê¡¼¥Ý¥¤¥ó¥È¤òÄ󶡤¹¤ë¤³¤È¤¬²Äǽ
¤Ê¤â¤Î¤â¿¤¯¡¤¤½¤ì¤Ï¡¤Fortran I/O¤Î¤è¤¦¤Ê¤â¤Î¤ò½é´ü²½¤¹¤ë¤¿¤á¤Ë¡¤Fortran
¥é¥¤¥Ö¥é¥ê¤Îmain
´Ø¿ô¤Ç¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡¥
AC_F77_MAIN
/AC_FC_MAIN
¥Þ¥¯¥í¤Ï¡¤¤½¤Î¤è¤¦¤ÊÂåÍý¤Î
main
´Ø¿ô¤ÎÍøÍѤ¬²Äǽ¤«¤É¤¦¤«¤ò¸¡½Ð¤·¡¤
F77_MAIN
/AC_FC_MAIN
¤ò´Ø¿ô¤Î̾Á°¤ËÄêµÁ¤·¤Þ¤¹¡¥(ÂåÍý¤Î
main
´Ø¿ô¤Î̾Á°¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤
F77_MAIN
/AC_FC_MAIN
¤Ïñ½ã¤Ëmain
¤ËÄêµÁ¤·¤Þ¤¹¡¥)
¤³¤Î¤¿¤á¡¤Fortran¥ë¡¼¥Á¥ó¤¬¡¤I/O¤Î¤è¤¦¤Ê¤â¤Î¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ËC¤«¤é¸Æ¤Ó½Ð
¤µ¤ì¤ë¤È¤¡¤¤³¤Î¥Þ¥¯¥í¤ò»ÈÍѤ·¡¤"main"´Ø¿ô¤òmain
¤Ç¤Ï¤Ê¤¯
F77_MAIN
/FC_MAIN
¤Î̾Á°¤Ë¤¹¤Ù¤¤Ç¤¹¡¥
̾Á°¤¬mangle¤µ¤ì¤ëÊýË¡¤òFortran¥³¥ó¥Ñ¥¤¥é¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë¤â¤Î¤Ë°ìÃפµ¤»
¤ë¤¿¤á¡¤mangle¤µ¤ì¤Æ¤¤¤ëC/C++¤Î¼±Ê̻Ҥȥ¢¥ó¥À¡¼¥¹¥³¥¢¤¬ÉÕ¤¤¤¿¼±Ê̻ҤÎ̾
Á°¤¬Àµ¤·¤¯¤Ê¤ë¤è¤¦¤Ë¡¤C¥Þ¥¯¥í¤Î
F77_FUNC(name,NAME)
/FC_FUNC(name,NAME)
¤È
F77_FUNC_(name,NAME)
/FC_FUNC_(name,NAME)
¤ò¤½¤ì¤¾¤ìÄêµÁ¤·¤Þ
¤¹¡¥
Fortran¤ÏÂçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤¬Ìµ¤¯¡¤¤³¤Î¤¿¤á¤Ë¡¤Fortran¥³¥ó¥Ñ¥¤¥é¤ÏÁ´¤Æ¤Î
¼±Ê̻Ҥòɸ½àŪ¤Êʸ»ú¤È½ñ¼°¤ËÊÑ´¹¤·¤Þ¤¹¡¥C¤«¤éFortran¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó
½Ð¤·¤¿¤ê¡¤Fortran¤«¤é¸Æ¤Ó½Ð¤·²Äǽ¤ÊC´Ø¿ô¤ò½ñ¤¤¤¿¤ê¤¹¤ë¤¿¤á¤Ë¡¤C¥×¥í¥°¥é
¥à¤Ç¤ÏFortran¥³¥ó¥Ñ¥¤¥é¤¬´üÂÔ¤¹¤ë½ñ¼°¤Ç¡¤¼±Ê̻ҤòÌÀ¼¨Åª¤Ë»ÈÍѤ¹¤ëɬÍפ¬
¤¢¤ê¤Þ¤¹¡¥¤³¤¦¤¹¤ë¤¿¤á¤Ë¡¤Á´¤Æ¤ÎC¼±Ê̻ҤòAC_F77_WRAPPERS
¤ä
AC_FC_WRAPPERS
¤ÇÄ󶡤µ¤ì¤ë¥Þ¥¯¥í¤Î°ì¤Ä¤Ç¡¤Ã±½ã¤Ë¥é¥Ã¥Ñ¡¼´Ø¿ô¤Ë¤·
¤Þ¤¹¡¥Î㤨¤Ð¡¤°Ê²¼¤Î¤è¤¦¤ÊFortran¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤¬¤¢¤ë¤È¤·¤Þ¤¹¡¥
subroutine foobar(x,y) double precision x, y y = 3.14159 * x return end
C¤äC++¤Î¥×¥í¥È¥¿¥¤¥×¤Ç¡¤°Ê²¼¤Î¤è¤¦¤ËÀë¸À¤·¤Þ¤¹¡¥
#define FOOBAR_F77 F77_FUNC(foobar,FOOBAR) #ifdef __cplusplus extern "C" /* prevent C++ name mangling */ #endif void FOOBAR_F77(double *x, double *y);
Àµ¤·¤¤¤â¤Î¤¬ÁªÂò¤Ç¤¤ë¤è¤¦¤Ë¡¤´Ø¿ô̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤ÎξÊý¤Î¥Ð¡¼¥¸¥ç¥ó¤ò
F77_FUNC
¤ËÅϤ·¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥¤Þ¤¿¡¤Fortran 77 ¤Î¥ë¡¼
¥Á¥ó¤Ø¤ÎÁ´¤Æ¤Î¥Ñ¥é¥á¡¼¥¿¤ò¡¤¥Ý¥¤¥ó¥¿¤È¤·¤ÆÅϤ·¤Æ¤¤¤ë¤³¤È¤Ë¤âÃí°Õ¤·¤Æ¤¯¤À
¤µ¤¤(see Mixing Fortran 77 With C and C++ in GNU
Automake)¡¥
(Fortran 77¤ÎÂå¤ï¤ê¤Ë¡¤Fortran¤ËÂФ·¤Æ¤ÏF77
¤ÏFC
¤ÇÃÖ´¹¤·¤Æ
²¼¤µ¤¤¡¥)
Autoconf¤ÏFortran¥³¥ó¥Ñ¥¤¥é¤¬Ì¾Á°¤òmangle¤¹¤ë¼êË¡¤ò¸¡½Ð¤¹¤ë¤¿¤á¤ËÃÎŪ¤Ê
¼êË¡¤Ç»î¤ß¤Æ¤¤¤Þ¤¹¤¬¡¤Fortran¥³¥ó¥Ñ¥¤¥é¤Ï¤½¤ì¤ò¤Þ¤À¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤«
¤â¤·¤ì¤Þ¤»¤ó¡¥¤³¤Î¾ì¹ç¡¤¾åµ¤Î¥³¡¼¥É¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥¨¥é¡¼¤È¤Ê¤ê¤Þ¤¹¤¬¡¤
¤½¤ì°Ê³°¤Îưºî(Î㤨¤Ð¡¤Fortran¤Ë´ØÏ¢¤¹¤ëµ¡Ç½¤ÎÄä»ß)¤Ï¡¤
F77_FUNC
/FC_FUNC
¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´ºº¤¹¤ë¤³
¤È¤Ç°ú¤µ¯¤³¤µ¤ì¤Þ¤¹¡¥
¤µ¤Æ¡¤¤½¤Î¤è¤¦¤Ê¥ë¡¼¥Á¥ó¤òC¥×¥í¥°¥é¥à¤«¤é¸Æ¤Ó½Ð¤¹¤¿¤á¤Ë¡¤°Ê²¼¤Î¤è¤¦¤Ë¤· ¤Æ¤ß¤Þ¤¹¡¥
{ double x = 2.7183, y; FOOBAR_F77(&x, &y); }
Fortran 77¤Î¼±Ê̻Ҥ¬¥¢¥ó¥À¡¼¥¹¥³¥¢¤ò´Þ¤ó¤Ç¤¤¤ë(Î㤨¤Ðfoo_bar
¤Î)
¾ì¹ç¡¤F77_FUNC
/FC_FUNC
¤ÎÂå¤ï¤ê¤Ë
F77_FUNC_
/FC_FUNC_
¤ò(Ʊ¤¸°ú¿ô¤Ç)»ÈÍѤ¹¤Ù¤¤Ç¤¹¡¥¤³¤ì¤Ï¡¤¥¢
¥ó¥À¡¼¥¹¥³¥¢¤ò´Þ¤ó¤Ç¤¤¤ë¾ì¹ç¡¤Fortran¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ¤Ï°Û¤Ê¤ë̾Á°¤Ë
mangle¤¹¤ë¤â¤Î¤â¤¢¤ë¤«¤é¤Ç¤¹¡¥
¼±ÊÌ»Òname¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤ë¾ì¹ç¡¤¥·¥§¥ëÊÑ¿ôshellvar¤òFortran
¥ê¥ó¥«¤Îµ¬Â§(AC_F77_WRAPPERS
¤äAC_FC_WRAPPERS
¤â»²¾È¤·¤Æ¤¯¤À
¤µ¤¤)¤Ë¤è¤Ã¤Æ¡¤mangle¤µ¤ì¤ë¥Ð¡¼¥¸¥ç¥ó¤Îname¤òÊÝ»ý¤¹¤ë¤è¤¦¤ËÀßÄꤷ
¤Þ¤¹¡¥shellvar¤Ï¥ª¥×¥·¥ç¥ó¤Ç¤¹¡¥Ä󶡤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤¥·¥§¥ëÊÑ¿ô¤Ï
ñ½ã¤Ëname¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤Î¥Þ¥¯¥í¤ÎÌÜŪ¤Ï¡¤¾åµ¤Î¤è¤¦¤ËC¥×¥ê¥×¥í¥»¥Ã
¥µ¤òÄ̤¸¤Æ¤Ç¤Ï¤Ê¤¯¡¤¸Æ¤Ó½Ð¤·Â¦¤Ë̾Á°¤Îmangle¤Ë´Ø¤¹¤ë¾ðÊó¤Ë¥¢¥¯¥»¥¹¤¹¤ëÊý
Ë¡¤òÍ¿¤¨¤ë¤³¤È¤Ç¡¤Î㤨¤Ð¡¤C/C++°Ê³°¤Î¸À¸ì¤«¤éFortran¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¤¿
¤á¤Ç¤¹¡¥
¥Ç¥Õ¥©¥ë¥È¤Ç¡¤FC
¥Þ¥¯¥í¤Ï¡¤¥½¡¼¥¹¥³¡¼¥É¥Õ¥¡¥¤¥ë¤ò.f¤Î³ÈÄ¥»Ò
¤ò»ÈÍѤ·¤Æ¤¤¤ë¥Æ¥¹¥È¤ò¼Â¹Ô¤·¤Þ¤¹¡¥¤·¤«¤·¡¤¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ¤Ï¡¤Å¬Àڤʥե¡
¥¤¥ë̾¤ËÂФ·¤Æ¤Î¤ß¡¤¤è¤ê¿·¤·¤¤¸À¸ì¤Îµ¡Ç½¤òÍøÍѲÄǽ¤Ë¤·¡¤Î㤨¤Ð¡¤Fortran
90¤Îµ¡Ç½¤Ï.f90¥Õ¥¡¥¤¥ë¤À¤±¤Ë¤Ê¤ê¤Þ¤¹¡¥°ìÊý¡¤¤¹¤Ù¤Æ¤Î¥½¡¼¥¹¥Õ¥¡¥¤
¥ë¤¬.f¤Ç½ª¤ï¤ë¤³¤È¤ò´üÂÔ¤·¤Æ¤¤¤Æ¡¤Â¾¤Î¥Õ¥¡¥¤¥ë̾¤Î³ÈÄ¥»Ò¤ò¥µ¥Ý¡¼
¥È¤¹¤ë¤¿¤á¤Ë¤ÏÆÃ¼ì¤Ê¥Õ¥é¥°¤¬É¬Íפˤʤê¤Þ¤¹¡¥AC_FC_SRCEXT
¥Þ¥¯¥í¤Ï
ξÊý¤ÎÌäÂê¤ò°·¤¤¤Þ¤¹¡¥
AC_FC_SRCEXT
¤Ï¡¤³ÈÄ¥»Òext(¤¹¤Ê¤ï¤Á¡¤ext¤Ë¤Ï¥É¥Ã¥È¤Ï´Þ
¤Þ¤ì¤Þ¤»¤ó)¤Ç½ª¤ï¤ë¥Õ¥¡¥¤¥ë¤ò¼õ¤±Æþ¤ì¤ëFC
¥³¥ó¥Ñ¥¤¥é¤Î¼èÆÀ
¤ò»î¤ß¤Þ¤¹¡¥¤³¤¦¤¹¤ë¤¿¤á¤ËÆÃÄê¤Î¥³¥ó¥Ñ¥¤¥é¥Õ¥é¥°¤¬É¬Íפʾì¹ç¡¤¤½¤ì¤ò½ÐÎÏ
ÊÑ¿ôFCFLAGS_
ext¤ËÊݸ¤·¤Þ¤¹¡¥¤³¤Î³ÈÄ¥»Ò¤È¤³¤Î¥Õ¥é¥°¤Ï
(AC_FC_SRCEXT
¤¬ºÆ¤Ó¸Æ¤Ó½Ð¤µ¤ì¤ë¤Þ¤Ç)¡¤¤½¤ì°Ê¹ß¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤¹¤Ù
¤Æ¤ÎFC
¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡¥
Î㤨¤Ð¡¤µ¡Ç½¥Æ¥¹¥È¤Ç.f90¤Î³ÈÄ¥»Ò¤òÍѤ¤¤ë¤¿¤á¡¤
AC_FC_SRCEXT(f90)
¤ò»ÈÍѤ·¡¤¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á
¤ËɬÍפÊÄɲåե饰¤¬¤¢¤ì¤Ð¡¤FCFLAGS_f90
½ÐÎÏÊÑ¿ô¤òÀßÄꤷ¤Þ¤¹¡¥
FCFLAGS_
ext¤òñ½ã¤ËFCFLAGS
¤Ë½ñ¤¹þ¤à¤³¤È¤ÏÉÔ²Ä
ǽ¤Ç¡¤¤½¤ì¤Ë¤Ï¥³¥ó¥Ñ¥¤¥é¤ÎÀ©¸Â¤Ëµ¯°ø¤¹¤ëÆó¤Ä¤ÎÍýͳ¤¬¤¢¤ê¤Þ¤¹¡¥ºÇ½é¤Î¤â
¤Î¤Ï¡¤°ìÅ٤˰ì¤Ä¤ÎFCFLAGS_
ext¤¬»ÈÍѲÄǽ¤Ê¤Î¤Ç¡¤¤³¤È¤Ê¤ë³ÈÄ¥
»Ò¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤ÏÊÌ¡¹¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¤¿¤á¤Ç¤¹¡¥ÆóÈÖÌܤΤâ¤Î¤Ï¡¤
FCFLAGS_
ext¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Î¥½¡¼¥¹¥³¡¼¥É¤Î¥Õ¥¡¥¤¥ë̾¤Î
ľÁ°¤Ë½ñ¤¯É¬Íפ¬¤¢¤ë¤¿¤á¤Ç¤¹¡¥¤½¤Î¤¿¤á¡¤¾åµ¤ÎÎã¤ò³¤±¤ë¤È¡¤°Ê²¼
¤Î¥³¥Þ¥ó¥É¤ò»ý¤ÄMakefile¤Çfoo.f90¥Õ¥¡¥¤¥ë¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤Ç¤·¤ç
¤¦¡¥
foo.o: foo.f90 $(FC) -c $(FCFLAGS) $(FCFLAGS_f90) foo.f90
ext¤Î³ÈÄ¥»Ò¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤Î¥³¥ó¥Ñ¥¤¥ë¤ÇAC_FC_SRCEXT
¤¬À®¸ù¤¹
¤ë¾ì¹ç¡¤¤½¤ì¤Ï[action-if-success](¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï²¿¤â¤·¤Þ¤»¤ó)¤ò¸Æ¤Ó
½Ð¤·¤Þ¤¹¡¥¼ºÇÔ¤·¤¿¾ì¹ç¤È¡¤FC
¥³¥ó¥Ñ¥¤¥é¤Ë¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò¼õ¤±
Æþ¤ì¤µ¤»¤ëÊýË¡¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤[action-if-failure](¥Ç¥Õ¥©¥ë¥È¤Ï
¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤È¤È¤â¤Ë½ªÎ»¤·¤Þ¤¹)¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡¥
AC_FC_FREEFORM
¤Ï¡¤Fortran¥³¥ó¥Ñ¥¤¥é($FC
)¤Ç¥Õ¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã
¥È¤Î¥½¡¼¥¹¥³¡¼¥É¤¬²Äǽ¤Ç¤¢¤ë¤³¤È¤Î³Îǧ¤ò»î¤ß¤Þ¤¹(µÕ¤Ë¡¤Fortran 77¤Ï¤è¤ê
¸Å¤¤¸ÇÄê¥Õ¥©¡¼¥Þ¥Ã¥È·Á¼°¤Ç¤¹)¡¥É¬Íפʾì¹ç¡¤FCFLAGS
¤ËÄɲåե饰¤ò
²Ã¤¨¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡¥
¥Ç¥Õ¥©¥ë¥È¤Î.f³ÈÄ¥»Ò¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¤ÄɲäΥե饰¤¬Ä󶡤µ¤ì¤Æ
¤¤¤Ê¤¤¸Â¤ê¡¤Â¿¤¯¤Î¥³¥ó¥Ñ¥¤¥é¤¬¤³¤Î³ÈÄ¥»Ò¤ò¸ÇÄê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥½¡¼¥¹¥³¡¼¥É
¤Ç¤¢¤ë¤È²ò¼á¤¹¤ë¤Î¤Ç¡¤¤³¤Î¥Þ¥¯¥í¤¬ºÇ¤â½ÅÍפǤ¹¡¥.f90¤ä.f95
¤Î¤è¤¦¤Ë¡¤°Û¤Ê¤ë³ÈÄ¥»Ò¤òAC_FC_SRCEXT
¤Ç»ØÄꤷ¤Æ¤¤¤ë¾ì¹ç¡¤
AC_FC_FREEFORM
¤Ï¡¤Ä̾FCFLAGS
¤òÊÔ½¸¤¹¤ë¤³¤È¤Ê¤¯À®¸ù¤·¤Þ
¤¹¡¥
AC_FC_FREEFORM
¤Ï¥Õ¥ê¡¼¥Õ¥©¡¼¥à¤Î¥½¡¼¥¹¤Î¥³¥ó¥Ñ¥¤¥ë¤ÇÀ®¸ù¤¹¤ë¾ì¹ç¡¤
¤½¤ì¤Ï[action-if-success](¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï²¿¤â¤·¤Þ¤»¤ó)¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡¥
¼ºÇÔ¤·¤¿¾ì¹ç¡¤[action-if-failure](¥Ç¥Õ¥©¥ë¥È¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤È¤È
¤â¤Ë½ªÎ»¤·¤Þ¤¹)¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡¥
Previous: C++ Compiler, Up: Compilers and Preprocessors [Contents][Index]