4. ¹°¸®Çаú¿¡¼­ FortranÀ» »ç¿ëÇÏ´Â ¹ý

º» ¹°¸®Çаú¿¡¼­ FortranÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ¸·Î´Â Áöµµ ±³¼ö¸¦ ÅëÇÏ¿© unix¿¡¼­ f77À» »ç¿ëÇÏ´Â ¹æ¹ý°ú Àü»ê¹°¸®½ÇÇè½ÇÀÇ Windows-PC¿¡¼­ g77À» »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù.

unix¿¡¼­ FortranÀ» »ç¿ëÇÏ´Â ¹ý (How to use Fortran on the unix)

unix( unix.cnu.ac.kr)¸¦ »ç¿ëÇϱâ À§ÇÑ °èÁ¤Àº Áöµµ ±³¼ö¸¦ ÅëÇÏ¿© ½É °æ¹« ±³¼ö¿¡°Ô ½ÅûÇÑ´Ù. ´ëÇпø»ýÀÇ °æ¿ì¿¡´Â ´©±¸³ª ½ÅûÇÒ ¼ö ÀÖ´Ù.

¿ì¼± ´Ü¸»±â³ª PC¿¡¼­ unix¿¡ Á¢¼ÓÇϱâ À§ÇÏ¿©´Â TELNETÀ̶ó´Â ÇÁ·Î±×·¥ÀÌ ÇÊ¿äÇÏ´Ù. º¸Åë Win9x°¡ ¼³Ä¡µÇ¾î ÀÖ´Â PC¿¡´Â windows folder¿¡ µé¾î ÀÖ´Ù. ¶Ç ¸¹Àº °æ¿ì fileÀ» ÁÖ°í ¹Þ±â À§ÇÑ ftp ÇÁ·Î±×·¥ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ¿¡ ´ëÇÑ °ÍÀº ¹°¸®Çаú Àü»ê¹°¸®½ÇÇè½Ç ¼ÒÇÁÆ®¿þ¾î¸¦ ÂüÁ¶ÇÑ´Ù.

unix¸¦ »ç¿ëÇϱâ À§ÇÏ¿©´Â Ãʺ¸ÀûÀÎ unix ¸í·É¾î¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù.

Fortran programÀº Á¤ÇØÁø ±ÔÄ¢(syntax)¸¦ µû¶ó¼­ ¾´ º¸ÅëÀÇ ÅؽºÆ®ÀÌ´Ù. À̸¦ ¿ø½Ã ÄÚµåsource code¶ó°í ÇÑ´Ù. ÀÌ source code¸¦ ¾²±â À§ÇÏ¿©´Â editor¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. unix¿¡´Â emacs, vi µîÀÇ editor°¡ ÀÖ´Ù. Fortran programÀ» ÀÛ¼ºÇÑ ÈÄ È®ÀåÀÚ(extention)¸¦ .f ¶Ç´Â .forÀ¸·Î ÇÏ¿© file·Î ÀúÀåÇÏ¿©¾ß ÇÑ´Ù.

ÇÁ·Î±×·¥À» ¼öÇàÇϱâ Àü¿¡ ÇÁ·Î±×·¥À» ±â°è°¡ ÀÐÀ» ¼ö ÀÖ´Â ÇüÅ·Π¹Ù²Ù¾î¾ß ÇÑ´Ù. ÀÌ´Â compiler¶ó°í Çϴ Ưº°ÇÑ ÇÁ·Î±×·¥¿¡ ÀÇÇÏ¿© ¹Ù²ï´Ù. unix.cnu.ac.kr¿¡´Â Fortran 77 compiler´Â f77ÀÌ ¼³Ä¡µÇ¾î ÀÖ´Ù. compile ÈÄÀÇ Ãâ·ÂÀº Ưº°ÇÑ ¸í·ÉÀÌ ¾ø´Â ÇÑ a.outÀÌ µÈ´Ù. ¿øÇÏ¸é ´Ù¸¥ À̸§À¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù. (¾ö¹ÐÇÏ°Ô ¸»Çϸé ÀÌ ¼³¸íÀº Áö³ªÄ¡°Ô °£°áÇÏ´Ù. ½ÇÁ¦·Î´Â compiler´Â source code¸¦ object code·Î ¹Ù²Ù°í linker/loader¶ó´Â ÇÁ·Î±×·¥ÀÌ À̸¦ ½ÇÇà ÆÄÀÏexecutable·Î º¯È¯½ÃŲ´Ù.)

circle.fÀ̶ó´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´À¸¸é ´ÙÀ½°ú °°Àº ¼ø¼­·Î ÄÄÆÄÀÏ ÇÑ´Ù.

    f77 circle.f
    a.out
µ¿½Ã¿¡ ¿©·¯ °³ÀÇ ½ÇÇà fileÀ» ´Ù·ç°ÔµÇ¸é compilerÀÇ Ãâ·Â¿¡ À̸§À» ÁÖ´Â °ÍÀÌ ÁÁ´Ù. ÀÌ ¶§´Â -o optionÀ» Ãß°¡ÇÏ¸é µÈ´Ù. Áï
    f77 circle.f -o circle
¿Í °°ÀÌ ÇÏ¸é ½ÇÇà fileÀº circle°¡ µÈ´Ù. object codes¿Í executables´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é Áö¿ö¹ö¸®µµ·Ï ÇÑ´Ù.

¾Õ¿¡¼­ compiling°ú linkingÀ» ±¸ºÐÇÏÁö ¾Ê¾Ò´Ù. ½ÇÁ¦·Î´Â ÀÌ µÑÀº ¼­·Î ´Ù¸¥ °úÁ¤ÀÌÁö¸¸ Fortran compiler´Â ÀÌ µÎ °úÁ¤À» ¸ðµÎ ¼öÇàÇϱ⿡ º¸Åë »ç¿ëÀÚµéÀº À̸¦ ¸ð¸£°í Áö³ª°£´Ù. ´ÙÀ½ ¿¹¿¡¼­´Â source code fileÀÌ µÎ °³ÀÏ °æ¿ìÀÌ´Ù.

    f77 circle1.f circle2.f
ÀÌ °æ¿ì µÎ °³ÀÇ object code file Áï circle1.o°ú circle2.o ¹× a.exe µî ¼¼°³ÀÇ fileÀÌ ¸¸µé¾îÁø´Ù. ½ÇÁ¦·Î´Â Fortran compiler´Â ¿ì¼± source code¸¦ compileÇÏ¿© µÎ °³ÀÇ .o·Î ³¡³ª´Â obect files¸¦ ¸¸µé°í ÀÌ µÎ object file¸¦ link ½ÃÄÑ ½ÇÇà file a.exe¸¦ ¸¸µç´Ù. ¹°·Ð ÀÌ °úÁ¤À» Â÷·Ê Â÷·Ê·Î ¼öÇàÇÒ ¼öµµ ÀÖ´Ù.
    f77 -c circle1.f circle2.f
    f77 circle1.o circle2.o
ÀÌ·¸°Ô ¿©·¯ °³ÀÇ ºÐ¸®µÈ fileÀ» compileÇÏ´Â °ÍÀº fileÀÌ ¸¹°í ±× ÁßÀÇ ÀϺθ¸ ´Ù½Ã compile ÇÒ °æ¿ì À¯¿ëÇÏ´Ù. unix¿¡¼­´Â make¶ó´Â ÇÁ·Î±×·¥ÀÌ ÀÖ¾î source fileÀÌ ¿©·¯ °³ÀÎ Ä¿´Ù¶õ software package¸¦ ´Ù·ê ¶§ À¯¿ëÇÏ´Ù. ÀÌ package´Â makefile¸¦ ¸¸µé¾î ¼öÇàÇϵµ·Ï µÇ¾î ÀÖ´Ù. makefileÀ» ¸¸µå´Â ÀÏ´Â ¾à°£ º¹ÀâÇϱ⿡ ¿©±â¼­´Â ´õ ÀÌ»ó ´Ù·çÁö ¾Ê´Â´Ù.

Àü»ê¹°¸®½ÇÇè½Ç ÄÞÇ»ÅÍ¿¡¼­ FortranÀ» »ç¿ëÇÏ´Â ¹ý (How to use Fortran on the PC at Physics Computer Lab)

¹°¸®Çаú Àü»ê¹°¸®½ÇÇè½Ç PC¿¡´Â g77 for Win32°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù. ¿ì¼± Windows98À» »ç¿ëÇÒ ÁÙ ¸ð¸¥´Ù¸é ¿ì¼± À̸¦ ¹è¿ö¾ß ÇÑ´Ù.

Source code, object code, compiling, and linking

Fortran programÀº Á¤ÇØÁø ±ÔÄ¢(syntax)¸¦ µû¶ó¼­ ¾´ º¸ÅëÀÇ ÅؽºÆ®ÀÌ´Ù. À̸¦ ¿ø½Ã ÄÚµåsource code¶ó°í ÇÑ´Ù. ÀÌ source code¸¦ ¾²±â À§ÇÏ¿©´Â editor¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ´Â programmer's file editor (PFE)¸¦ »ç¿ëÇÏ¸é ¸Å¿ì Æí¸®ÇÏ´Ù. ÀÌ PFE¸¦ »ç¿ëÇϸé editµµ ÇÒ ¼ö ÀÖÀ» »Ó ¾Æ´Ï¶ó µÚ¿¡ ¼³¸íÇÏ´Â compile ¹× runÀ» ¼Õ½±°Ô ÇÒ ¼ö ÀÖ´Ù. PFE¿Í ÇÔ²² g77 »ç¿ëÇϱ⸦ ÂüÁ¶ÇÑ´Ù. PFE´Â ÇѱÛÀ» ÀÔ·ÂÇϴµ¥ ¹®Á¦°¡ ÀÖ´Ù.

Fortran programÀ» ½èÀ¸¸é È®ÀåÀÚ(extention)¸¦ .f ¶Ç´Â .forÀ¸·Î ÇÏ¿© file·Î ÀúÀåÇÏ¿©¾ß ÇÑ´Ù. floppy ¶Ç´Â C:\TempUser¿¡ ÀÚ½ÅÀÇ folder¸¦ ¸¸µç ÈÄ Àӽ÷ΠÀúÀåÇÑ´Ù.

ÇÁ·Î±×·¥À» ¼öÇàÇϱâ Àü¿¡ ÇÁ·Î±×·¥À» ±â°è°¡ ÀÐÀ» ¼ö ÀÖ´Â ÇüÅ·Π¹Ù²Ù¾î¾ß ÇÑ´Ù. ÀÌ´Â compiler¶ó°í Çϴ Ưº°ÇÑ ÇÁ·Î±×·¥¿¡ ÀÇÇÏ¿© ¹Ù²ï´Ù. º¸Åë Fortran 77 compiler´Â f77Àε¥ Àü»ê¹°¸®½ÇÇè½Ç¿¡´Â gnu¿¡¼­ ¹«·á·Î Á¦°øÇÏ´Â g77ÀÌ ¼³Ä¡µÇ¾î ÀÖ´Ù. compile ÈÄÀÇ Ãâ·ÂÀº Ưº°ÇÑ ¸í·ÉÀÌ ¾ø´Â ÇÑ a.exe°¡ µÈ´Ù. ¿øÇÏ¸é ´Ù¸¥ À̸§À¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù. programÀ» ¼öÇà½ÃÅ°·Á¸é ´Ü¼øÈ÷ ½ÇÇà file (executable file)ÀÇ iconÀ» clickÇÏ¸é µÈ´Ù. (ÀÌ ¼³¸íÀº ¾ö¹ÐÇÏ°Ô Áö³ªÄ¡°Ô °£°áÇÏ´Ù. ½ÇÁ¦·Î´Â compiler´Â source code¸¦ object code·Î ¹Ù²Ù°í linker/loader¶ó´Â ÇÁ·Î±×·¥ÀÌ À̸¦ ½ÇÇà ÆÄÀÏexecutable·Î º¯È¯½ÃŲ´Ù.) µ¿½Ã¿¡ ¿©·¯ °³ÀÇ ½ÇÇà fileÀ» ´Ù·ç°ÔµÇ¸é compilerÀÇ Ãâ·Â¿¡ À̸§À» ÁÖ´Â °ÍÀÌ ÁÁ´Ù. Áï PFEÀÇ [Execute] - [DOS command to WIndow ..]¿¡¼­ [Command]¿¡ -o optionÀ» Ãß°¡ÇÏ¸é µÈ´Ù. Áï

    c:\g77\bin\g77.exe circle.for -ocircle
¿Í °°ÀÌ ÇÏ¸é ½ÇÇà fileÀº circle.exe°¡ µÈ´Ù. object codes¿Í executables´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é Áö¿ö¹ö¸®µµ·Ï ÇÑ´Ù.

¾Õ¿¡¼­ compiling°ú linkingÀ» ±¸ºÐÇÏÁö ¾Ê¾Ò´Ù. ½ÇÁ¦·Î´Â ÀÌ µÑÀº ¼­·Î ´Ù¸¥ °úÁ¤ÀÌÁö¸¸ Fortran compiler´Â ÀÌ µÎ °úÁ¤À» ¸ðµÎ ¼öÇàÇϱ⿡ º¸Åë »ç¿ëÀÚµéÀº À̸¦ ¸ð¸£°í Áö³ª°£´Ù. ´ÙÀ½ ¿¹¿¡¼­´Â source code fileÀÌ µÎ °³ÀÏ °æ¿ìÀÌ´Ù.

    c:\g77\bin\g77.exe circle1.f circle2.f
ÀÌ °æ¿ì µÎ °³ÀÇ object code file Áï circle1.o°ú circle2.o ¹× a.exe µî ¼¼°³ÀÇ fileÀÌ ¸¸µé¾îÁø´Ù. ½ÇÁ¦·Î´Â Fortran compiler´Â ¿ì¼± source code¸¦ compileÇÏ¿© µÎ °³ÀÇ .o·Î ³¡³ª´Â obect files¸¦ ¸¸µé°í ÀÌ µÎ object file¸¦ link ½ÃÄÑ ½ÇÇà file a.exe¸¦ ¸¸µç´Ù. ¹°·Ð ÀÌ °úÁ¤À» Â÷·Ê Â÷·Ê·Î ¼öÇàÇÒ ¼öµµ ÀÖ´Ù.
    c:\g77\bin\g77.exe -c circle1.f circle2.f
    c:\g77\bin\g77.exe circle1.o circle2.o
ÀÌ·¸°Ô ¿©·¯ °³ÀÇ ºÐ¸®µÈ fileÀ» compileÇÏ´Â °ÍÀº fileÀÌ ¸¹°í ±× ÁßÀÇ ÀϺθ¸ ´Ù½Ã compile ÇÒ °æ¿ì À¯¿ëÇÏ´Ù. Unix¿¡¼­¿Í ¸¶Âù°¡Áö·Î make¶ó´Â ÇÁ·Î±×·¥ÀÌ ÀÖ¾î source fileÀÌ ¿©·¯ °³ÀÎ Ä¿´Ù¶õ software package¸¦ ´Ù·ê ¶§ À¯¿ëÇÏ´Ù. ÀÌ package´Â makefile¸¦ ¸¸µé¾î ¼öÇàÇϵµ·Ï µÇ¾î ÀÖ´Ù. makefileÀ» ¸¸µå´Â ÀÏ´Â ¾à°£ º¹ÀâÇϱ⿡ ¿©±â¼­´Â ´õ ÀÌ»ó ´Ù·çÁö ¾Ê´Â´Ù.


Exercises:

Exercise A
¿©±â¸¦ ´©¸£¸é ¿¹Á¦ ÇÁ·Î±×·¥À» down-load ÇÒ ¼ö ÀÖ´Ù. À̸¦ ÀÚ½ÅÀÇ folder¿¡ ÀúÀå ÇÑ µÚ compileÇÏ°í ¼öÇà½ÃÄÑ º»´Ù.

Exercise B
¾ÕÀÇ programÀ» ¼öÁ¤ÇÏ¿© ¸éÀû ´ë½Å¿¡ µÑ·¹¸¦ ±¸ÇÏ´Â ÇÁ·Î±×·¥À¸·Î ¹Ù²Ù¾î¶ó. compileÇÑ µÚ ¼öÇà½ÃÄÑ ±× ´äÀ» È®ÀÎÇÏ¿© º»´Ù.


[Fortran Tutorial]
Ãæ³²´ëÇб³ ¹°¸®Çаú ¿À º´¼º