์ด๊ฒ์ Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ aarch64-linux-gnu-gfortran-4.8 ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
gfortran - GNU ํฌํธ๋ ์ปดํ์ผ๋ฌ
๊ฐ์
์งํฌํธ๋ [-c|-S|-E]
[-g] [-ํ์ด์ง] [-O์ํ]
[-W๊ฒฝ๊ณ ...] [-ํ๋จ ํฑ]
[-IDIR...] [-LDIR...]
[-D๋งคํฌ๋ก[=๋ฐํ]...] [-U๋งคํฌ๋ก]
[-foption...]
[-m๊ธฐ๊ณ ์ต์ ...]
[-o ์์ํ์ผ] ์ธํ์ผ...
๊ฐ์ฅ ์ ์ฉํ ์ต์ ๋ง ์ฌ๊ธฐ์ ๋์ด๋ฉ๋๋ค. ๋๋จธ์ง๋ ์๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๊ธฐ์
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ์งํฌํธ๋ ๋ช ๋ น์ ๋ค์์์ ์ง์ํ๋ ๋ชจ๋ ์ต์ ์ ์ง์ํฉ๋๋ค. GCC ๋ช ๋ น. ์ต์ ๋ง
GNU Fortran์๋ง ํด๋นํ๋ ๋ด์ฉ์ด ์ฌ๊ธฐ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค.
๋ชจ๋ GCC ๋ฐ GNU Fortran ์ต์ ์ ๋ค์์์ ๋ชจ๋ ํ์ฉ๋ฉ๋๋ค. ์งํฌํธ๋ ๊ณผ ๋ณ GCC (๋ฟ๋ง ์๋๋ผ ์ด๋ค
๊ฐ์ ์๊ฐ์ ๊ตฌ์ถ๋ ๋ค๋ฅธ ๋๋ผ์ด๋ฒ g ++), GCC์ GNU Fortran์ ์ถ๊ฐํ ์ดํ
๋ฐฐํฌ๋ฅผ ํตํด ๋ชจ๋ ๊ด๋ จ ๋๋ผ์ด๋ฒ๊ฐ GNU Fortran ์ต์ ์ ์๋ฝํ ์ ์์ต๋๋ค.
๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ต์ ์๋ ๊ธ์ ์ ์ธ ํํ์ ๋ถ์ ์ ์ธ ํํ๊ฐ ์์ต๋๋ค. ์ ๋ถ์ ์ ์ธ ํํ - ํธํธ ๊ฒ ์ง
be -fno-foo. ์ด ์ค๋ช ์๋ ์ด ๋ ๊ฐ์ง ํ์ ์ค ํ๋๋ง ๋ฌธ์ํํฉ๋๋ค.
ํ๋ง.
์ต์
๋ค์์ ์ ํ๋ณ๋ก ๊ทธ๋ฃนํ๋ GNU Fortran์ ๋ชจ๋ ์ต์ ์ ๋ํ ์์ฝ์ ๋๋ค.
์ค๋ช ์ ๋ค์ ์น์ ์ ์์ต๋๋ค.
ํฌํธ๋ ์ง์ํ๋ ์ธ์ด ์ต์
- ๊ฐ์์ ๋ณธ์ง -f๋ฐฑ์ฌ๋์ -fcray ํฌ์ธํฐ -fd-๋ผ์ธ-์ฝ๋ -fd-๋ผ์ธ-์ฃผ์
-fdefault-๋๋ธ-8 -fdefault-์ ์-8 -fdefault-real-8 -fdollar-ํ์ธ
-๊ณ ์ ๋ผ์ธ ๊ธธ์ด-n -fixed-line-length-none -์์ ํ์ -f์์ ๋ผ์ธ ๊ธธ์ด-n
-ffree-๋ผ์ธ ๊ธธ์ด-์์ -์์์ ์์ -finteger-4-์ ์-8 -fmax-์๋ณ์-๊ธธ์ด
-f๋ชจ๋-๋น๊ณต๊ฐ -fno ๊ณ ์ ํ์ -fno ๋ฒ์ ํ์ธ -fopenmp -real-4-real-10
-real-4-real-16 -real-4-real-8 -real-8-real-10 -real-8-real-16 -real-8-real-4
-ํ์ค=ํ์ค
์ ์ฒ๋ฆฌ ์ต์
-์์ด-๋ฌธ์ [=๋ต๋ณ] -A๋ฌธ์ =๋ต๋ณ -C -CC -D๋งคํฌ๋ก[=๋ฐํ] -H -P -U๋งคํฌ๋ก -cpp -dD
-๋ -dM -NS -๋ -fworking-๋๋ ํ ๋ฆฌ -imultilib DIR -ipprefix ํ์ผ - ์ธ์ฉ -isysroot DIR
-์์ด์์คํ DIR -nocpp -Nostdinc -์ธ๋ฐํ
์ค๋ฅ and ๊ฒฝ๊ณ ์ต์
-์๋ฆฌ์์ฑ -๋ฒฝ -์ํผ์๋ -์๋ ์ด ๊ฒฝ๊ณ -Wc ๋ฐ์ธ๋ฉ ์ ํ -๋ฌธ์ ์๋ฆผ
-W๋ณํ -Wfunction ์ ๊ฑฐ - ์๋ฌต์ ์ธํฐํ์ด์ค - ์๋ฌต์ ์ ์ฐจ
-์ํธ๋ฆฐ์ง ์๋์ฐ -Wintrinsics-std -Wline ์๋ฆผ -Wno-์ ๋ ฌ-๊ณตํต -Wno-ํญ
-Wreal-q-์์ -๋๋ผ์ -๋ถ๋ํ๋ก์ฐ -Wunused-๋งค๊ฐ๋ณ์ -Wrealloc-lhs Wrealloc-
ใ ใ ใ ๋ค -Wtarget-ํ์ -fmax-์ค๋ฅ=n -fsyntax ์ ์ฉ -ํ๋จ ํฑ - ํํ์ ์ค๋ฅ
๋๋ฒ๊น ์ต์
-fbacktrace -fdump-fortran ์ต์ ํ -fdump-ํฌํธ๋-์๋ณธ -fdump-๊ตฌ๋ฌธ ๋ถ์ ํธ๋ฆฌ
-ffpe-ํธ๋ฉ=๋ช ๋ถ
๋ช ๋ถ ๋ด๋น ์ต์
-IDIR -JDIR -fintrinsic-๋ชจ๋-๊ฒฝ๋ก DIR
(๋งํฌ) ์ต์
-์ ์ -libgfortran
๋ฐํ์ ์ต์
-f๋ณํ=๋ณํ -fmax-ํ์ ๋ ์ฝ๋ ๊ธธ์ด=๊ธธ์ด -frecord-๋ง์ปค=๊ธธ์ด -fsign-XNUMX
์ํธ ์ธ๋ ์ต์
-๊ณต๊ฒฉ์ ๊ธฐ๋ฅ ์ ๊ฑฐ -fblas-matmul-์ ํ=n -fbounds-์ฒดํฌ
-fcheck-๋ฐฐ์ด-์์ -์ํ์ฒดํฌ=
-fco๋ฐฐ์ด= -fexternal-blas -ff2c -ffrontend ์ต์ ํ
-ํ์ ๋ฌธ์=n - ์ ํ ์ ์ =n -finit-local-XNUMX - ์ ํ ๋ ผ๋ฆฌ =
-์ต์์ค์= -fmax-๋ฐฐ์ด ์์ฑ์=n -fmax-์คํ-var-ํฌ๊ธฐ=n
-fno-์ ๋ ฌ-๊ณตํต -fno-์๋ -fno ๋ณดํธ ๊ดํธ -fno-๋ฐ์ค
-fno-์ ์ฒด ํ์ผ -fsecond-๋ฐ์ค -fpack ํ์ -frealloc-lhs - ์ฌ๊ท
-frepack-๋ฐฐ์ด -fshort ์ด๊ฑฐํ -fstack-๋ฐฐ์ด
์ต์ ์ ์ด ํฌํธ๋ ๋ฐฉ์ธ
๋ค์ ์ต์ ์ ์ปดํ์ผ๋ฌ์์ ํ์ฉํ๋ ํฌํธ๋ ๋ฐฉ์ธ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ์ดํฉ๋๋ค.
-์์ ํ์
-๊ณ ์ ํ
์์ค ํ์ผ์์ ์ฌ์ฉํ๋ ๋ ์ด์์์ ์ง์ ํฉ๋๋ค. ์์ ํ์ ๋ ์ด์์์ด ๋์ ๋์์ต๋๋ค.
Fortran 90. ๊ณ ์ ํ์์ ์ ํต์ ์ผ๋ก ์ด์ Fortran ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋์์ต๋๋ค. ์ธ์
์ต์ ์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ์์ค ํ์์ ํ์ผ ํ์ฅ์์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
- ๊ฐ์์ ๋ณธ์ง
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๋ด์ฅ ํ๋ก์์ (GNU ํน์ ํ์ฅ ํฌํจ)๊ฐ
๋ฐ์๋ค์ฌ์ง๋ค. ์ด๊ฒ์ ๋ค์๊ณผ ํจ๊ป ์ ์ฉํ ์ ์์ต๋๋ค. -ํ์ค=f95 ํ์ค ์ค์๋ฅผ ๊ฐ์ํ์ง๋ง
์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ด์ฅ ๊ธฐ๋ฅ์ ๋ํ ์ก์ธ์ค ์งํฌํธ๋. ๊ฒฐ๊ณผ๋ก์,
-Wintrinsics-std ๋ฌด์๋๊ณ ๋ค์๊ณผ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ฌ์ฉ์ ์ ์ ํ๋ก์์ ๊ฐ ์์ต๋๋ค.
๋ช ์์ ์ผ๋ก "EXTERNAL"๋ก ์ ์ธ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ๋ด์ฅ ํจ์๊ฐ ํธ์ถ๋ฉ๋๋ค.
-fd-๋ผ์ธ-์ฝ๋
-fd-๋ผ์ธ-์ฃผ์
๊ณ ์ ํ์ ์์ค์์ "d" ๋๋ "D"๋ก ์์ํ๋ ์ค์ ๋ํด ํน๋ณ ์ฒ๋ฆฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
๊ฒฝ์ฐ -fd-๋ผ์ธ-์ฝ๋ ์ต์ ์ด ์ฃผ์ด์ง๋ฉด ์ฒซ ๋ฒ์งธ ์ด์ฒ๋ผ ์ฒ๋ฆฌ๋ฉ๋๋ค.
๊ณต๋ฐฑ์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ง์ฝ -fd-๋ผ์ธ-์ฃผ์ ์ต์ ์ด ์ฃผ์ด์ง๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ฝ๋ฉํธ ๋ผ์ธ.
-fdefault-๋๋ธ-8
"DOUBLE PRECISION" ์ ํ์ 8๋ฐ์ดํธ ๋๋น ์ ํ์ผ๋ก ์ค์ ํฉ๋๋ค. ๋ง์ฝ์ -fdefault-real-8 ์ฃผ์ด์ง๋ค,
"DOUBLE PRECISION"์ ๋์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ 16๋ฐ์ดํธ๋ก ์น๊ฒฉ๋๋ฉฐ,
-fdefault-๋๋ธ-8 ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ค์ ์์์ ์ข ๋ฅ
"1.d0"์ ๋ค์์ผ๋ก ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. -fdefault-real-8 ํ์ง๋ง, ์ญ์ -fdefault-๋๋ธ-8 ํ์ง
์ํฅ์์ฃผ์ง ์์ต๋๋ค.
-fdefault-์ ์-8
๊ธฐ๋ณธ ์ ์ ๋ฐ ๋ ผ๋ฆฌ ์ ํ์ 8๋ฐ์ดํธ ๋๋น ์ ํ์ผ๋ก ์ค์ ํฉ๋๋ค. ์ด๋ฌ๋ฉด ์๋ฌด๊ฒ๋ ํ์ง๋ง
์ด๋ฏธ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ์ ์ ์์์ ์ข ๋ฅ์๋ ์ํฅ์ ์ค๋๋ค.
42.
-fdefault-real-8
๊ธฐ๋ณธ ์ค์ ์ ํ์ 8๋ฐ์ดํธ ๋๋น ์ ํ์ผ๋ก ์ค์ ํฉ๋๋ค. ์ด๊ฒ์ด ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ์๋ฌด ๊ฒ๋ ํ์ง ๋ง์ญ์์ค.
๊ธฐ๋ณธ. ์ด ์ต์ ์ 1.0๊ณผ ๊ฐ์ ๋น-์ด์ค ์ค์ ์์์ ์ข ๋ฅ์๋ ์ํฅ์ ๋ฏธ์น๋ฉฐ,
๊ฐ๋ฅํ ๊ฒฝ์ฐ "DOUBLE PRECISION"์ ๊ธฐ๋ณธ ๋๋น๋ฅผ 16๋ฐ์ดํธ๋ก ์น๊ฒฉํฉ๋๋ค.
"-fdefault-double-8"๋ ์ ๊ณต๋ฉ๋๋ค.
-fdollar-ํ์ธ
ํ์ฉ $ ๊ธฐํธ ์ด๋ฆ์์ ์ฒซ ๋ฒ์งธ๊ฐ ์๋ ์ ํจํ ๋ฌธ์๋ก. ๋ก ์์ํ๋ ๊ธฐํธ $ are
์์์ ํ์ดํ์ ์ ์ฉํ ๊ท์น์ด ์๋ก ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ถ๋จ
๊ณต๊ธ์ ์ฒด๋ ๋ค๋ฅธ ๊ท์น์ ๊ตฌํํฉ๋๋ค. ์ฌ์ฉ $ "IMPLICIT" ๋ฌธ๋ ๊ฑฐ๋ถ๋ฉ๋๋ค.
-f๋ฐฑ์ฌ๋์
๋จ์ผ ๋ฐฑ์ฌ๋์์์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๋ฐฑ์ฌ๋์ ํด์ ๋ณ๊ฒฝ
๋ฌธ์๋ฅผ "C ์คํ์ผ" ์ด์ค์ผ์ดํ ๋ฌธ์๋ก ๋ณํํฉ๋๋ค. ๋ค์ ์กฐํฉ์ด ํ์ฅ๋ฉ๋๋ค.
"\a", "\b", "\f", "\n", "\r", "\t", "\v", "\\" ๋ฐ "\0"์ ASCII ๋ฌธ์๋ก
๊ฒฝ๊ณ , ๋ฐฑ์คํ์ด์ค, ์์ ํผ๋, ์ค ๋ฐ๊ฟ, ์บ๋ฆฌ์ง ๋ฆฌํด, ๊ฐ๋ก ํญ, ์ธ๋ก ํญ,
๊ฐ๊ฐ ๋ฐฑ์ฌ๋์ ๋ฐ NUL์ ๋๋ค. ๋ํ "\x"nn, "\u"NNNN ๋ฐ "\U"ใ ใ ใ ใ ใ
(์ด๋์ ๊ฐ๊ฐ n ๋ XNUMX์ง์) ์ ๋์ฝ๋ ๋ฌธ์๋ก ๋ณํ๋ฉ๋๋ค.
์ง์ ๋ ์ฝ๋ ํฌ์ธํธ์ ํด๋นํฉ๋๋ค. ์บ๋ฆญํฐ์ ๋ค๋ฅธ ๋ชจ๋ ์กฐํฉ
\๊ฐ ์์ ์ค๋ ๊ฒ์ ํ์ฅ๋์ง ์์ต๋๋ค.
-f๋ชจ๋-๋น๊ณต๊ฐ
๋ชจ๋ ์ํฐํฐ์ ๊ธฐ๋ณธ ์ก์ธ์ค ๊ฐ๋ฅ์ฑ์ "PRIVATE"๋ก ์ค์ ํฉ๋๋ค. ์ฌ์ฉ ๊ด๋ จ
์ํฐํฐ๋ "PUBLIC"์ผ๋ก ๋ช ์์ ์ผ๋ก ์ ์ธ๋์ง ์๋ ํ ์ก์ธ์คํ ์ ์์ต๋๋ค.
-๊ณ ์ ๋ผ์ธ ๊ธธ์ด-n
์ผ๋ฐ์ ์ธ ๊ณ ์ ํ์ ์ค์์ ๋ฌธ์๊ฐ ๋ฌด์๋๋ ์ด์ ์ค์ ํฉ๋๋ค.
์์ค ํ์ผ ๋ฐ ์ดํ ๊ณต๋ฐฑ์ด ๊ฐ์ ๋๋(ํด๋น ๊ธธ์ด๋งํผ ์ฑ์์ง ๊ฒ์ฒ๋ผ)
์งง์ ๊ณ ์ ํ์ ๋ผ์ธ์ ๋.
์ ๋ํ ์ธ๊ธฐ ๊ฐ n 72(ํ์ค ๋ฐ ๊ธฐ๋ณธ๊ฐ), 80(์นด๋ ์ด๋ฏธ์ง) ๋ฐ
132(์ผ๋ถ ์ธ๊ธฐ ์๋ ์ปดํ์ผ๋ฌ์ "ํ์ฅ ์์ค" ์ต์ ์ ํด๋น). n ๏ผ์
๋ํ ์์, ์ ์ฒด ํ์ด ์๋ฏธ ์๊ณ ๊ณ์๋๋ ๋ฌธ์๋ฅผ ์๋ฏธํฉ๋๋ค.
์์์๋ ์ค์ ์ฑ์ฐ๊ธฐ ์ํด ์์์ ๊ณต๋ฐฑ์ด ์ถ๊ฐ๋์ง ์์ต๋๋ค.
-๊ณ ์ ์ค ๊ธธ์ด-0 ๋ค์๊ณผ ๊ฐ์ ์๋ฏธ -fixed-line-length-none.
-f์์ ๋ผ์ธ ๊ธธ์ด-n
์์ค์ ์ผ๋ฐ์ ์ธ ์์ ํ์ ํ์์ ๋ฌธ์๊ฐ ๋ฌด์๋๋ ์ด์ ์ค์ ํฉ๋๋ค.
ํ์ผ. ๊ธฐ๋ณธ๊ฐ์ 132์ ๋๋ค. n ์ ์์, ์ฆ ์ ์ฒด ๋ผ์ธ์
์๋ฏธ์๋. -ffree-๋ผ์ธ ๊ธธ์ด-0 ๋ค์๊ณผ ๊ฐ์ ์๋ฏธ -ffree-๋ผ์ธ ๊ธธ์ด-์์.
-fmax-์๋ณ์-๊ธธ์ด=n
์ต๋ ํ์ฉ ์๋ณ์ ๊ธธ์ด๋ฅผ ์ง์ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฐ์ 31(Fortran 95) ๋ฐ
63(Fortran 2003 ๋ฐ Fortran 2008).
-์์์ ์์
๋ช ์์ "IMPLICIT"์ ์ํด ์ฌ์ ์๋์ง ์๋ ํ ์์์ ์ ๋ ฅ์ด ํ์ฉ๋์ง ์๋๋ก ์ง์ ํฉ๋๋ค.
์ง์ . ์ด๊ฒ์ ๋ชจ๋ ์์ ๋ถ๋ถ์ "์์์ ์์"์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
์์.
-finteger-4-์ ์-8
๋ชจ๋ "INTEGER(KIND=4)" ์ํฐํฐ๋ฅผ "INTEGER(KIND=8)" ์ํฐํฐ๋ก ์น๊ฒฉํฉ๋๋ค. "์ข ๋ฅ=8"์ธ ๊ฒฝ์ฐ
์ฌ์ฉํ ์ ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ์ต์ ์ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค
๊ทํ์ ์ฝ๋์ ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค. ์ฐ๋ ค๋๋ ์์ญ์๋ ๋ค์ ์ ํ๊ฐ ํฌํจ๋ฉ๋๋ค.
์ธ๋ถ ์ ์ฐจ, "EQUIVALENCE" ๋ฐ/๋๋ "COMMON" ์ ๋ ฌ, ์ผ๋ฐ ์ธํฐํ์ด์ค,
BOZ ๋ฆฌํฐ๋ด ์์ ๋ณํ ๋ฐ I/O. ์ค๊ฐ์ฒด ๊ฒ์ฌ
์ ์ํด ์์ฑ๋ ๋ฒ์ญ๋ Fortran ์ฝ๋์ ํํ -fdump-ํธ๋ฆฌ-์๋ณธ์ด๋ค
์ ์ํ๋ค.
-fcray ํฌ์ธํฐ
C์ ์ ์ฌํ ํฌ์ธํฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Cray ํฌ์ธํฐ ํ์ฅ์ ํ์ฑํํฉ๋๋ค.
-fopenmp
OpenMP ํ์ฅ์ ํ์ฑํํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์ ํ์์ OpenMP "!$omp" ์ง์๋ฌธ์ด ํฌํจ๋ฉ๋๋ค.
๋ฐ "c$omp", *$omp ๋ฐ "!$omp" ์ง์๋ฌธ(๊ณ ์ ํ์), "!$" ์กฐ๊ฑด๋ถ ์ปดํ์ผ
์์ ํ์์ ์ผํฐ๋ฌ๊ณผ ๊ณ ์ ํ์์ "c$", "*$" ๋ฐ "!$" ์ผํฐ๋ฌ
์ฐ๊ฒฐ์ OpenMP ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฐ๊ฒฐ๋๋๋ก ์ ๋ ฌํฉ๋๋ค. ์ต์ -fopenmp
์๋ฏธํ๋ค - ์ฌ๊ท.
-fno ๋ฒ์ ํ์ธ
๋์ ์์ ํํ์์ ๋จ์ํ ๊ฒฐ๊ณผ์ ๋ํ ๋ฒ์ ๊ฒ์ฌ ๋นํ์ฑํ
ํธ์ง. ์๋ฅผ ๋ค์ด, GNU Fortran์ ๋ค์๊ณผ ๊ฐ์ ์ปดํ์ผ ํ์์ ์ค๋ฅ๋ฅผ ์ ๊ณตํฉ๋๋ค.
"a = 1. / 0"์ ๋จ์ํํฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ณ "a"๊ฐ ํ์๋ฉ๋๋ค.
"+Infinity" ๊ฐ์ ํ ๋นํ์ต๋๋ค. ํํ์์ด ์ธ๋ถ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ ๊ฒฝ์ฐ
["-HUGE()":"HUGE()"]์ ๊ด๋ จ ๋ฒ์์ธ ๊ฒฝ์ฐ ํํ์์ "-Inf"๋ก ๋์ฒด๋ฉ๋๋ค.
๋๋ ์ ์ ํ๊ฒ "+Inf". ๋ง์ฐฌ๊ฐ์ง๋ก "DATA i/Z'FFFFFFFF'/"๋ ์ ์๊ฐ ๋ฉ๋๋ค.
๋๋ถ๋ถ์ ์์คํ ์์ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํ์ง๋ง -fno ๋ฒ์ ํ์ธ ๊ฐ์ "๋ํ"๋๊ณ
"i"๋ ๋์ -1๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
-real-4-real-8
-real-4-real-10
-real-8-real-4
-real-8-real-10
-real-8-real-16
๋ชจ๋ "REAL(KIND=M)" ์ํฐํฐ๋ฅผ "REAL(KIND=N)" ์ํฐํฐ๋ก ์น๊ฒฉํฉ๋๋ค. "REAL(KIND=N)"์ธ ๊ฒฝ์ฐ
์ฌ์ฉํ ์ ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์ค์ ์ข ๋ฅ ์ ํ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
์ด ์ต์ ์ผ๋ก. ์ด๋ฌํ ์ต์ ์ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํ๋ฉฐ ๋ค์์๋ ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค.
๋น์ ์ ์ฝ๋. ๊ฐ๋ฅํ ์ฐ๋ ค ์์ญ์๋ ์ธ๋ถ ์ ์ฐจ์ ๋ํ ํธ์ถ, ์ ๋ ฌ์ด ํฌํจ๋ฉ๋๋ค.
"EQUIVALENCE" ๋ฐ/๋๋ "COMMON"์์ ์ผ๋ฐ ์ธํฐํ์ด์ค, BOZ ๋ฆฌํฐ๋ด ์์ ๋ณํ,
๋ฐ I/O. ๋ฒ์ญ๋ Fortran์ ์ค๊ฐ ํํ ๊ฒ์ฌ
์ ์ํด ์์ฑ๋ ์ฝ๋ -fdump-ํธ๋ฆฌ-์๋ณธ, ์ ์๋ฉ๋๋ค.
-ํ์ค=ํ์ค
ํ๋ก๊ทธ๋จ์ด ์ค์ํ ๊ฒ์ผ๋ก ์์๋๋ ํ์ค์ ์ง์ ํ์ญ์์ค.
f95, f2003, f2008, ์์ ๋น์ทํ ์ผ์ข ์ ์์๋ฐ ์ ์ฐ. ์ ๋ํ ๊ธฐ๋ณธ๊ฐ ํ์ค is ์์ ๋น์ทํ ์ผ์ข ์ ์์, ์ง์
์ง์๋๋ ๋ชจ๋ ํ์ฅ์ ํฌํจํ๋ Fortran 95 ํ์ค์ ์์ ์งํฉ
GNU Fortran, ๊ถ์ฅ๋์ง ์๋ ์ค๋๋ ํ์ฅ์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง๋ง
์ ์ฝ๋์์ ์ฌ์ฉํ๊ธฐ ์ํด. NS ์ ์ฐ ๊ฐ์ ๋์ผํ์ง๋ง ๋ค์์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ์์ต๋๋ค.
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ํ์ฅ์ด๋ฉฐ ์ค๋๋ ๋นํ์ค ํ๋ก๊ทธ๋จ์ ์ ์ฉํ ์ ์์ต๋๋ค. NS f95, f2003
and f2008 ๊ฐ์ Fortran 95, Fortran 2003 ๋ฐ
๊ฐ๊ฐ Fortran 2008 ํ์ค; ์ด์ธ์ ๋ชจ๋ ํ์ฅ์ ๋ํด ์ค๋ฅ๊ฐ ์ ๊ณต๋ฉ๋๋ค.
๊ด๋ จ ์ธ์ด ํ์ค ๋ฐ Fortran 77 ๊ธฐ๋ฅ์ ๋ํ ๊ฒฝ๊ณ ๊ฐ ์ ๊ณต๋ฉ๋๋ค.
ํ์ฉ๋์ง๋ง ์ดํ ํ์ค์์๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. -std=f2008ts ํฌํธ๋ 2008 ํ์ฉ
๊ธฐ์ ์ฌ์(TS) 29113 ์ถ๊ฐ๋ฅผ ํฌํจํ ํ์ค
Fortran๊ณผ C์ ์ํธ ์ด์ฉ์ฑ
์ฌ์ฉ and ์ฌ์ฉ์ ์ ์ ์ ์ฒ๋ฆฌ
์ ์ฒ๋ฆฌ๊ธฐ ๊ด๋ จ ์ต์ . ์น์ ์ฐธ์กฐ ์ ์ฒ๋ฆฌ and ์กฐ๊ฑด๋ถ์ ํธ์ง for
์ ์ ์ฒ๋ฆฌ์ ๋ํ ์์ธํ ์ ๋ณด ์งํฌํธ๋.
-cpp
-nocpp
์ ์ฒ๋ฆฌ๋ฅผ ํ์ฑํํฉ๋๋ค. ํ์ผ ํ์ฅ์๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์๋์ผ๋ก ํธ์ถ๋ฉ๋๋ค.
is .fpp, .FPP, .F, .์์ํ, .FTN, .F90, .F95, .F03 or .F08. ์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก
๋ชจ๋ ์ข ๋ฅ์ Fortran ํ์ผ์ ์ฌ์ ์ฒ๋ฆฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
์์ ๋์ด๋ ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ ์ ์ฒ๋ฆฌ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค.
๋ถ์ ์ ์ธ ํํ: -nocpp.
์ ์ฒ๋ฆฌ๊ธฐ๋ ๊ธฐ์กด ๋ชจ๋์์ ์คํ๋ฉ๋๋ค. ํ์ผ ํ์์ ์ ํ ์ฌํญ,
ํนํ ๋ผ์ธ ๊ธธ์ด์ ๋ํ ์ ํ์ ์ ์ฒ๋ฆฌ๋ ์ถ๋ ฅ์๋ ์ ์ฉ๋๋ฏ๋ก
์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค -ffree-๋ผ์ธ ๊ธธ์ด-์์ or -fixed-line-length-none
์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-dM ์ผ๋ฐ ์ถ๋ ฅ ๋์ ๋ชจ๋ '#define' ์ง์๋ฌธ ๋ชฉ๋ก์ ์์ฑํ์ญ์์ค.
๋ฏธ๋ฆฌ ์ ์๋ ๋งคํฌ๋ก๋ฅผ ํฌํจํ์ฌ ์ ์ฒ๋ฆฌ๊ธฐ ์คํ ์ค์ ์ ์๋ ๋งคํฌ๋ก์ ๋๋ค.
์ด๊ฒ์ ๊ทํ์ ๋ฒ์ ์ ์ฌ์ ์ ์๋ ๊ฒ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ. ํ์ผ์ด ์๋ค๊ณ ๊ฐ์ ํธ.f90, ๋ช ๋ น
ํฐ์น foo.f90; gfortran -cpp -E -dM foo.f90
๋ฏธ๋ฆฌ ์ ์ ๋ ๋ชจ๋ ๋งคํฌ๋ก๊ฐ ํ์๋ฉ๋๋ค.
-dD ์ฒ๋ผ -dM ๋ ๊ฐ์ง ์ธก๋ฉด์ ์ ์ธํ๊ณ ๋ ๋ฏธ๋ฆฌ ์ ์๋ ๋งคํฌ๋ก๋ฅผ ํฌํจํ์ง ์์ผ๋ฉฐ
"#define" ์ง์๋ฌธ๊ณผ ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ์ถ๋ ฅํฉ๋๋ค. ๋ ์ข ๋ฅ์
์ถ๋ ฅ์ ํ์ค ์ถ๋ ฅ ํ์ผ๋ก ์ด๋ํฉ๋๋ค.
-NS ์ฒ๋ผ -dD, ๊ทธ๋ฌ๋ ํ์ฅ์ด ์๋ ๋งคํฌ๋ก ์ด๋ฆ๋ง ๋ด๋ณด๋ ๋๋ค.
-๋ ์ฒ๋ผ dD ํ์ฅ๋๊ฑฐ๋ ์ ์๊ฐ ํ ์คํธ๋ ๋งคํฌ๋ก๋ง ์ ์ธ
์ ์ฒ๋ฆฌ๊ธฐ ์ง์๋ฌธ์ด ์ถ๋ ฅ๋ฉ๋๋ค. ์ ์ฌ์ฉ ๋๋ ํ ์คํธ๊ฐ ์๋ฃ๋ ๋๊น์ง ์ถ๋ ฅ์ด ์ง์ฐ๋ฉ๋๋ค.
๋งคํฌ๋ก; ๋ฐ '#undef' ์ง์๋ฌธ์ ํ ์คํธ๋์์ง๋ง ์ ์๋์ง ์์ ๋งคํฌ๋ก์ ๋ํด์๋ ์ถ๋ ฅ๋ฉ๋๋ค.
์๊ฐ.
-๋ ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ ์ธ์ '#include' ์ง์๋ฌธ์ ์ถ๋ ฅํฉ๋๋ค.
-fworking-๋๋ ํ ๋ฆฌ
์ปดํ์ผ๋ฌ๊ฐ ํ์ฉํ๋ ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ์์ โโ๋ผ์ธ ๋ง์ปค ์์ฑ์ ํ์ฑํ
์ ์ฒ๋ฆฌ ์์ ์ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์๊ณ ์์ต๋๋ค. ์ด ์ต์ ์ด
ํ์ฑํ๋๋ฉด ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ด๊ธฐ ๋ผ์ธ ๋ง์ปค ๋ค์์ ๋ ๋ฒ์งธ ๋ผ์ธ ๋ง์ปค๋ฅผ ๋ด๋ณด๋ ๋๋ค.
ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ ๋ค์ ๋ ๊ฐ์ ์ฌ๋์๊ฐ ์์ต๋๋ค. GCC๋ ์ด๊ฒ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค
๋๋ ํ ๋ฆฌ, ์ฌ์ ์ฒ๋ฆฌ๋ ์ ๋ ฅ์ ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ด๋ณด๋ธ ๋๋ ํ ๋ฆฌ๋ก
์ผ๋ถ ๋๋ฒ๊น ์ ๋ณด ํ์์ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ. ์ด ์ต์ ์
๋๋ฒ๊น ์ ๋ณด๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ์์์ ์ผ๋ก ํ์ฑํ๋์ง๋ง ๋ค์์ผ๋ก ๊ธ์งํ ์ ์์ต๋๋ค.
๋ถ์ ํ -fno-์์ ๋๋ ํฐ๋ฆฌ. ๊ฒฝ์ฐ -P ํ๋๊ทธ๊ฐ ๋ช ๋ น์ ์์ต๋๋ค.
line์์ "#line" ์ง์๋ฌธ์ด ์ ํ ์์ฑ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ด ์ต์ ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
-idirafter DIR
๊ฒ์ DIR ํฌํจ ํ์ผ์ ๊ฒฝ์ฐ ๋ค์์ผ๋ก ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ ๋ค์์ ์ํํ์ญ์์ค. -I and
ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ๊ฐ ์์ง๋์์ต๋๋ค. DIR ์์คํ ์ผ๋ก ์ทจ๊ธ๋๋ค
๋๋ ํ ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค. dir์ด "="๋ก ์์ํ๋ฉด "="๋
sysroot ์ ๋์ฌ; ๋ณด๋ค --sysroot and -isysroot.
-imultilib DIR
DIR ๋์๋ณ C++ ํค๋๋ฅผ ํฌํจํ๋ ๋๋ ํ ๋ฆฌ์ ํ์ ๋๋ ํ ๋ฆฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
-ipprefix ์ ๋์ฌ
์ง์ ์ ๋์ฌ ํ์ ์ ๋์ฌ๋ก -iwith ์ ๋์ฌ ์ต์ . ๋ง์ฝ ์ ๋์ฌ
๋๋ ํ ๋ฆฌ๋ฅผ ๋ํ๋ด๋ฏ๋ก ๋ง์ง๋ง '/'๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.
-isysroot DIR
์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. --sysroot ์ต์ ์ด์ง๋ง ํค๋ ํ์ผ์๋ง ์ ์ฉ๋ฉ๋๋ค. ์ฐธ์กฐ
--sysroot ์์ธํ ๋ด์ฉ์ ์ต์ ์ ์ฐธ์กฐํ์ญ์์ค.
- ์ธ์ฉ DIR
๊ฒ์ DIR "#include "file""๋ก ์์ฒญ๋ ํค๋ ํ์ผ์๋ง ํด๋นํฉ๋๋ค. ๊ทธ๋ค์ ์๋๋ค
"#ํฌํจ"์ ๊ฒ์ํ์ต๋๋ค. ", ๋ค์์ ์ํด ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ ์์ -I ๊ทธ๋ฆฌ๊ณ ์ ์
ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ. ๋ง์ฝ์ DIR "="๋ก ์์ํ๋ฉด "="๋ก ๋์ฒด๋ฉ๋๋ค.
sysroot ์ ๋์ฌ; ๋ณด๋ค --sysroot and -isysroot.
-์์ด์์คํ DIR
๊ฒ์ DIR ํค๋ ํ์ผ์ ๊ฒฝ์ฐ ๋ค์์ผ๋ก ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ ๋ค์ -I ๊ทธ๋ฌ๋ ์ ์
ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ. ์์คํ ๋๋ ํ ๋ฆฌ๋ก ํ์ํ์ฌ ๋์ผํ๊ฒ ๊ฐ์ ธ์ต๋๋ค.
ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ์ ์ ์ฉ๋๋ ํน๋ณํ ์ทจ๊ธ. ๋ง์ฝ์ DIR ~๋ก ์์ํ๋ค
"=", "="๋ sysroot ์ ๋์ฌ๋ก ๋์ฒด๋ฉ๋๋ค. ๋ณด๋ค --sysroot and -isysroot.
-Nostdinc
ํค๋ ํ์ผ์ ๋ํ ํ์ค ์์คํ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํ์ง ๋ง์ญ์์ค. ๋๋ ํ ๋ฆฌ๋ง
๋น์ ์ ๋ก ์ง์ ํ์ต๋๋ค -I ์ต์ (๋ฐ ํ์ฌ ํ์ผ์ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ
ํด๋น)์ด ๊ฒ์๋ฉ๋๋ค.
-์ธ๋ฐํ
์์คํ ํน์ ๋๋ GCC ํน์ ๋งคํฌ๋ก๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ์ง ๋ง์ญ์์ค. ๋ฏธ๋ฆฌ ์ ์๋ ํ์ค
๋งคํฌ๋ก๋ ์ ์๋ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
-A์ ๋ถ=๋ต๋ณ
์ ์ด๋ก ์ฃผ์ฅํ๊ธฐ ์ ๋ถ ๋๋ต ๋ต๋ณ. ์ด ์์์
์ด์ ํ์๋ณด๋ค ์ ํธ๋๋ -A predicate(answer), ์ฌ์ ํ ์ง์๋ฉ๋๋ค.
์ ํน์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
-์์ด-์ ๋ถ=๋ต๋ณ
์ ์ด๋ก ์ด์ค์ ์ทจ์ ์ ๋ถ ๋๋ต ๋ต๋ณ.
-C ๋๊ธ์ ๋ฒ๋ฆฌ์ง ๋ง์ธ์. ๋ค์์ ์ ์ธํ ๋ชจ๋ ์ฃผ์์ ์ถ๋ ฅ ํ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ง์๋ฌธ๊ณผ ํจ๊ป ์ญ์ ๋๋ ์ฒ๋ฆฌ๋ ์ง์๋ฌธ์ ์๋ ์ฃผ์์ ๊ฒฝ์ฐ.
์ฌ์ฉ ์ ๋ถ์์ฉ์ ๋๋นํด์ผ ํฉ๋๋ค. -C; ๊ทธ๊ฒ์ ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ
๋๊ธ์ ์์ฒด์ ์ผ๋ก ํ ํฐ์ผ๋ก ์ทจ๊ธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฒ์ํ์ ํ์๋๋ ๋๊ธ์
์ง์ ํ์ด ๋ ๊ฒ์ ์์์ ๊ทธ ํ์ ๋ค์์ผ๋ก ๋ฐ๊พธ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ค์ ์ฒซ ๋ฒ์งธ ํ ํฐ์ด ๋ ์ด์ '#'์ด ์๋๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ ์์ค ์ค์ ๋๋ค.
๊ฒฝ๊ณ : ์ด๊ฒ์ ํ์ฌ C ์คํ์ผ ์ฃผ์๋ง ์ฒ๋ฆฌํฉ๋๋ค. ์ ์ฒ๋ฆฌ๊ธฐ๋ ์์ง
ํฌํธ๋ ์คํ์ผ ์ฃผ์์ ์ธ์ํฉ๋๋ค.
-CC ๋งคํฌ๋ก ํ์ฅ ์ค์ ํฌํจํ์ฌ ์ฃผ์์ ์ญ์ ํ์ง ๋ง์ญ์์ค. ์ด๊ฒ์ ๋ง์น -C์ ์ธ
๋งคํฌ๋ก์ ํฌํจ๋ ์ฃผ์๋ ์ถ๋ ฅ ํ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
๋งคํฌ๋ก๊ฐ ํ์ฅ๋ฉ๋๋ค.
๋ถ์์ฉ ๋ฟ๋ง ์๋๋ผ -C ์ต์ , -CC ์ต์ ์ ๋ชจ๋ C++ ์คํ์ผ์ ์ ๋ฐํฉ๋๋ค.
๋งคํฌ๋ก ๋ด๋ถ์ ์ฃผ์์ C ์คํ์ผ ์ฃผ์์ผ๋ก ๋ณํํฉ๋๋ค. ์ด๊ฒ์ ๋์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด
์ค์๋ก ์์ค ํ์ ๋๋จธ์ง ๋ถ๋ถ์ ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ์ฌ ํด๋น ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -CC ์ต์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฆฐํธ ์ฃผ์์ ์ง์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฒฝ๊ณ : ์ด๊ฒ์ ํ์ฌ C ๋ฐ C++ ์คํ์ผ ์ฃผ์๋ง ์ฒ๋ฆฌํฉ๋๋ค. ์ ์ฒ๋ฆฌ๊ธฐ๋
์์ง Fortran ์คํ์ผ ์ฃผ์์ ์ธ์ํ์ง ๋ชปํฉ๋๋ค.
-Dname
์ ์ 1๊ณผ ํจ๊ป ์ด๋ฆ์ ๋งคํฌ๋ก๋ก ๋ฏธ๋ฆฌ ์ ์ํ์ญ์์ค.
-Dname=์ ์
๋ด์ฉ ์ ์ ํ ํฐํ ๋ฐ ์ฒ๋ฆฌ๋ฉ๋๋ค.
'#define' ์ง์๋ฌธ์์ ๋ฒ์ญ ๋จ๊ณ XNUMX. ํนํ, ์ ์๋
ํฌํจ๋ ๊ฐํ ๋ฌธ์์ ์ํด ์๋ฆฝ๋๋ค.
์ ๋๋ ์๊ณผ ์ ์ฌํ ํ๋ก๊ทธ๋จ์์ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ ๋ค์์ด ํ์ํ ์ ์์ต๋๋ค.
์์ ์ธ์ฉ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ณต๋ฐฑ๊ณผ ๊ฐ์ ๋ฌธ์๋ฅผ ๋ณดํธํฉ๋๋ค.
์ ๊ตฌ๋ฌธ์ ์๋ฏธ.
๋ช ๋ น์ค์์ ํจ์์ ๊ฐ์ ๋งคํฌ๋ก๋ฅผ ์ ์ํ๋ ค๋ฉด ํด๋น ์ธ์๋ฅผ ์์ฑํ์ญ์์ค.
๋ฑํธ(์๋ ๊ฒฝ์ฐ) ์์ ๊ดํธ๊ฐ ์๋ ๋ชฉ๋ก. ๊ดํธ๋
๋๋ถ๋ถ์ ์์ ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก ์ต์ ์ ์ธ์ฉํด์ผ ํฉ๋๋ค. sh ๋ฐ csh๋ฅผ ์ฌ์ฉํ์ฌ
"-D'name(args...)=definition'"์ด ์๋ํฉ๋๋ค.
-D and -U ์ต์ ์ ๋ช ๋ น์ค์ ์ ๊ณต๋ ์์๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ชจ๋
-imacros ํ์ผ ๋ฐ -include ํ์ผ ์ต์ ์ ๋ชจ๋ -D ๋ฐ -U ์ต์ ํ์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
-H ๋ค๋ฅธ ์ผ๋ฐ ํ๋๊ณผ ํจ๊ป ์ฌ์ฉ๋ ๊ฐ ํค๋ ํ์ผ์ ์ด๋ฆ์ ์ธ์ํ์ญ์์ค. ๊ฐ
name์ '#include' ์คํ์ ๊น์ด๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ค์ฌ์ฐ๊ธฐ๋ฉ๋๋ค.
-P ์ ์ฒ๋ฆฌ๊ธฐ์ ์ถ๋ ฅ์์ โโ๋ผ์ธ๋ง์ปค ์์ฑ์ ๊ธ์งํฉ๋๋ค. ์ด๊ฒ์ ์๋ง๋
C ์ฝ๋๊ฐ ์๋ ๋ฌด์ธ๊ฐ์์ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์คํํ ๋ ์ ์ฉํ๋ฉฐ ์ ์ก๋ ๊ฒ์ ๋๋ค.
linemarkers์ ์ํด ํผ๋๋ ์ ์๋ ํ๋ก๊ทธ๋จ์.
-Uname
์ด์ ์ ์ ์ทจ์ name, ๋ด์ฅ ๋๋ ์ ๊ณต -D ์ต์ ์ ์ ํํฉ๋๋ค.
์ต์ ์ ์๋ขฐ or ์ง์ํ๋ค ์ค๋ฅ and ๊ฒฝ๊ณ
์ค๋ฅ๋ GNU Fortran ์ปดํ์ผ๋ฌ๊ฐ ์ปดํ์ผํ ์ ์๋ค๊ณ ๋ณด๊ณ ํ๋ ์ง๋จ ๋ฉ์์ง์ ๋๋ค.
์์ค ์ฝ๋์ ๊ด๋ จ ๋ถ๋ถ. ์ปดํ์ผ๋ฌ๋ ๊ณ์ํด์ ํ๋ก๊ทธ๋จ์ ์ฒ๋ฆฌํฉ๋๋ค.
๋๋ฒ๊น ์ ๋๊ธฐ ์ํด ์ถ๊ฐ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋ ค๊ณ ์๋ํ์ง๋ง ์ปดํ์ผ๋ ์ค๋ฅ๋ฅผ ์์ฑํ์ง ์์ต๋๋ค.
์ถ๋ ฅ.
๊ฒฝ๊ณ ๋ ๋ณธ์ง์ ์ผ๋ก ๊ทธ๋ ์ง ์์ ๊ตฌ์ฑ์ ๋ณด๊ณ ํ๋ ์ง๋จ ๋ฉ์์ง์ ๋๋ค.
์ค๋ฅ๊ฐ ์์ง๋ง ์ํํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ ๋ฒ๊ทธ๊ฐ ์์ ์ ์์์ ์์ํฉ๋๋ค.
์๋ ํ -์๋ฌ ์ง์ ๋์ด ์์ผ๋ฉด ํ๋ก๊ทธ๋จ ์ปดํ์ผ์ ๋ฐฉํดํ์ง ์์ต๋๋ค.
์ต์ ์ด ์์๋๋ ๋ง์ ํน์ ๊ฒฝ๊ณ ๋ฅผ ์์ฒญํ ์ ์์ต๋๋ค. -W์๋ฅผ ๋ค์ด, - ์๋ฌต์
์์์ ์ ์ธ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ์์ฒญํฉ๋๋ค. ์ด๋ฌํ ํน์ ๊ฒฝ๊ณ ์ต์ ์ ๊ฐ๊ฐ
์์ ํํ๋ก ์์ -์๋- ๊ฒฝ๊ณ ๋ฅผ ๋๋ ค๋ฉด; ์๋ฅผ ๋ค์ด, -Wno-์์์ .
์ด ์ค๋ช ์๋ ๋ ๊ฐ์ง ํ์ ์ค ๊ธฐ๋ณธ๊ฐ์ด ์๋ ํ์ ์ค ํ๋๋ง ๋์ดํฉ๋๋ค.
์ด ์ต์ ์ GNU Fortran์์ ์์ฑ๋๋ ์ค๋ฅ ๋ฐ ๊ฒฝ๊ณ ์ ์๊ณผ ์ข ๋ฅ๋ฅผ ์ ์ดํฉ๋๋ค.
-fmax-์ค๋ฅ=n
์ต๋ ์ค๋ฅ ๋ฉ์์ง ์๋ฅผ ๋ค์์ผ๋ก ์ ํํฉ๋๋ค. n, ๊ทธ ์์ ์์ GNU Fortran์ ๊ตฌ์ ๊ธ์ต
์์ค ์ฝ๋๋ฅผ ๊ณ์ ์ฒ๋ฆฌํ๋ ค๊ณ ์๋ํ๋ ๋์ . ๋ง์ฝ์ n ๋ 0, ์๋ค
์์ฑ๋ ์ค๋ฅ ๋ฉ์์ง ์์ ๋ํ ์ ํ.
-fsyntax ์ ์ฉ
์ฝ๋์์ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ํ์ธํ๋ ์ค์ ๋ก ์ปดํ์ผํ์ง๋ ๋ง์ญ์์ค. ์ด๊ฒ์ ์์ฑํฉ๋๋ค
๊ฐ ๋ชจ๋์ ๋ํ ๋ชจ๋ ํ์ผ์ ์ฝ๋์ ์์ง๋ง ๋ค๋ฅธ ์ถ๋ ฅ ํ์ผ์ ์์ต๋๋ค.
-ํ๋จ ํฑ
Fortran 95์ ๋ํ ํ์ฅ ์ฌ์ฉ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํฉ๋๋ค. -ํ๋จ ํฑ ๋ํ ์ ์ฉ
๋ค์๊ณผ ๊ฐ์ด GNU Fortran ์์ค ํ์ผ์์ ๋ฐ์ํ๋ C ์ธ์ด ๊ตฌ์ฑ \e
"#include"์ ๊ฐ์ ์ง์๋ฌธ ๋ด์ ๋ฌธ์ ์์์์.
์ ํจํ Fortran 95 ํ๋ก๊ทธ๋จ์ ์ด ์ต์ ์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์๊ณ ์ ๋๋ก ์ปดํ์ผํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด ์ต์ ์ด ์์ผ๋ฉด ํน์ GNU ํ์ฅ ๋ฐ ๊ธฐ์กด ํฌํธ๋ ๊ธฐ๋ฅ์ด
๋ ์ง์๋ฉ๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋๋ถ๋ถ์ด ๊ฑฐ๋ถ๋ฉ๋๋ค.
์ผ๋ถ ์ฌ์ฉ์๋ ์ฌ์ฉํ๋ ค๊ณ -ํ๋จ ํฑ ํ๋ก๊ทธ๋จ์ ์ ํฉ์ฑ์ ํ์ธํฉ๋๋ค. ๊ทธ๋ค์ ๊ณง ๋ฐ๊ฒฌ
๊ทธ๋ค์ด ์ํ๋ ๋๋ก ํ์ง ์๋๋ค๋ ๊ฒ --- ์ผ๋ถ ๋นํ์ค ๊ดํ์ ๋ฐ๊ฒฌํ์ง๋ง,
์ ๋ถ๋ ์๋๋ค. ๊ทธ๋ฌ๋ ์ด ์์ญ์์ GNU Fortran์ ๋ํ ๊ฐ์ ์ ํ์ํฉ๋๋ค.
์ด๊ฒ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค. -ํ์ค=f95, -ํ์ค=f2003 or -ํ์ค=f2008.
- ํํ์ ์ค๋ฅ
์ฒ๋ผ -ํ๋จ ํฑ, ๊ฒฝ๊ณ ๊ฐ ์๋ ์ค๋ฅ๊ฐ ์์ฑ๋๋ค๋ ์ ์ ์ ์ธํ๊ณ .
-๋ฒฝ
์ฌ์ฉ๊ณผ ๊ด๋ จํ์ฌ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ๊ณ ์ต์ ์ ํ์ฑํํ์ฌ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ํผํ๊ธฐ ์ฝ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์ฌ๊ธฐ์๋ ํ์ฌ ๋ค์์ด ํฌํจ๋ฉ๋๋ค. -์๋ฆฌ์์ฑ,
-์ํผ์๋, -W๋ณํ, -๋๋ผ์, -Wc ๋ฐ์ธ๋ฉ ์ ํ, -Wintrinsics-std,
-Wno-ํญ, -์ํธ๋ฆฐ์ง ์๋์ฐ, -Wline ์๋ฆผ, -Wtarget-ํ์, -Wreal-q-์์
and - ์ฌ์ฉํ์ง ์์.
-์๋ฆฌ์์ฑ
๋๋ฏธ ์ธ์์ ๊ฐ๋ฅํ ๋ณ์นญ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ํนํ ๋์ผํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
์ค์ ์ธ์๋ "INTENT(IN)"์ด ์๋ ๋๋ฏธ ์ธ์ ๋ฐ ๋๋ฏธ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋ช ์์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ ํธ์ถ์์ "INTENT(OUT)"๊ฐ ์๋ ์ธ์.
๋ค์ ์์์๋ ๊ฒฝ๊ณ ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
์ธํฐํ์ด์ค
์๋ธ๋ฃจํด ๋ฐ(a,b)
์ ์, ์๋(in) :: a
์ ์, ์๋(์ถ๋ ฅ) :: b
์๋ธ๋ฃจํด ์ข ๋ฃ
๋ ์ธํฐํ์ด์ค
์ ์ :: a
์ฝ ๋ฐ(a,a)
-์ํผ์๋
์ฐ์ ๋ฌธ์ ์์์์ ๋๋ฝ๋ ์ฐํผ์๋์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ๊ฒฝ๊ณ ๊ฐ ์ฃผ์ด์ง๋ค
๊ณผ -์ํผ์๋, -ํ๋จ ํฑ, -ํ์ค=f95, -ํ์ค=f2003 and -ํ์ค=f2008. ์ฐธ๊ณ : ์์
์ฐ์ ๋ฌธ์ ์์๋ก ์ฃผ์ด์ง ์ฐํผ์๋, GNU Fortran์ ๋ค์์์ ์ฐ์์ ๊ฐ์ ํฉ๋๋ค.
์์ํ๋ ์ฐํผ์๋ ๋ค์์ ์ฒซ ๋ฒ์งธ ์ฃผ์ ๋ฐ ๊ณต๋ฐฑ์ด ์๋ ๋ฌธ์
๊ณ์.
-์๋ ์ด-์์
์ปดํ์ผ๋ฌ์ ์ํด ์์ฑ๋ ์์ ๋ฐฐ์ด์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ ์ํด ์์ฑ๋ ์ ๋ณด
์ด ๊ฒฝ๊ณ ๋ ์ด๋ฌํ ์ผ์์ ์ธ ํ์์ ํผํ๊ธฐ ์ํด ์ต์ ํ์ ์ ์ฉํฉ๋๋ค.
-Wc ๋ฐ์ธ๋ฉ ์ ํ
๋ณ์๊ฐ C ์ํธ ์ด์ฉ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. ํนํ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ณ์๊ฐ ๋ค์์ ์ฌ์ฉํ๋ ๋์ ๊ธฐ๋ณธ ์ข ๋ฅ์ ๋ด์ฅ ์ ํ์ ์ฌ์ฉํ์ฌ ์ ์ธ๋์์ต๋๋ค.
๋ด์ฅ "ISO_C_Binding"์์ C ์ํธ ์ด์ฉ์ฑ์ ์ํด ์ ์๋ ์ข ๋ฅ ๋งค๊ฐ๋ณ์
๊ธฐ์ค ์น์. ์ด ์ต์ ์ -๋ฒฝ.
-๋ฌธ์ ์๋ฆผ
๋ฌธ์ ํ ๋น์ด ํ ๋น๋ ๋ฌธ์์ด์ ์๋ฅผ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
-Wline ์๋ฆผ
์์ค ์ฝ๋ ์ค์ด ์๋ฆด ๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ์ต์ ์ -๋ฒฝ.
-W๋ณํ
ํํ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ์์์ ๋ณํ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
๋ณํ ํ. ์ ์ํด ์์ -๋ฒฝ.
-Wconversion-์ถ๊ฐ
๋ค๋ฅธ ์ ํ๊ณผ ์ข ๋ฅ ๊ฐ์ ์์์ ๋ณํ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
-์ฉ์คํธ๋ผ
๋ฌธ์ ๊ฐ ๋ ์ ์๋ ์ธ์ด ๊ธฐ๋ฅ ์ฌ์ฉ์ ๋ํ ๋ช ๊ฐ์ง ๊ฒฝ๊ณ ์ต์ ์ ํ์ฑํํฉ๋๋ค.
ํ์ฌ ํฌํจ๋์ด ์์ต๋๋ค. - ์ค์ ๋น๊ต and -Wunused-๋งค๊ฐ๋ณ์.
- ์๋ฌต์ ์ธํฐํ์ด์ค
๋ช ์์ ์ธํฐํ์ด์ค ์์ด ํ๋ก์์ ๊ฐ ํธ์ถ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ํ์ธ๋ง ํ๋ค๋ ์ ์ ์ ์ํ์ญ์์ค.
๋ช ์์ ์ธํฐํ์ด์ค๊ฐ ์กด์ฌํฉ๋๋ค. ์ ์ธ๋ ์ธํฐํ์ด์ค๊ฐ
ํ๋ก๊ทธ๋จ ๋จ์์์ ์ผ๊ด์ฑ์ด ์์ต๋๋ค.
- ์๋ฌต์ ์ ์ฐจ
๋ช ์์ ์ธํฐํ์ด์ค๊ฐ ์๊ฑฐ๋ ์ธํฐํ์ด์ค๊ฐ ์๋ ํ๋ก์์ ๊ฐ ํธ์ถ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
"์ธ๋ถ"๋ก ์ ์ธ๋์์ต๋๋ค.
-Wintrinsics-std
๋ค์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ์งํฌํธ๋ ์์ ์ฌ์ฉํ ์ ์๋ ๋ด์ฅ๊ณผ ๊ฐ์ ์ด๋ฆ์ ํ๋ก์์ ๋ฅผ ์ฐพ์ต๋๋ค.
ํ์ฌ ์ ํ๋ ํ์ค( -ํ์ค) ๋ฐ "EXTERNAL" ์ ์ฐจ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์
์ด์. - ๊ฐ์์ ๋ณธ์ง ์ด ๋์์ ํธ๋ฆฌ๊ฑฐํ์ง ์๊ณ ํญ์ ๋งํฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํํ ํ์ค์ ๊ด๊ณ์์ด ๋ณธ์ง์ ์ผ๋ก.
-Wreal-q-์์
real-literal-constant์ "q" ์ง์ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ์์ฑํฉ๋๋ค.
-๋๋ผ์
"์์ฌ์ค๋ฌ์ด" ์ฝ๋ ๊ตฌ์ฑ์ด ๋ฐ๊ฒฌ๋๋ฉด ๊ฒฝ๊ณ ๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ ๋์
๊ธฐ์ ์ ์ผ๋ก ํฉ๋ฒ์ ์ธ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ ๋ํ๋ ๋๋ค.
์ด๊ฒ์ ํ์ฌ ๋ค์ ์ํฉ์์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํฉ๋๋ค.
ยท INTEGER SELECT ๊ตฌ๋ฌธ์๋ ํ์ ํญ๋ชฉ๊ณผ ์ผ์นํ์ง ์๋ CASE๊ฐ ์์ต๋๋ค.
๊ฐ์ด ์์ ๊ฐ๋ณด๋ค ํฝ๋๋ค.
ยท LOGICAL SELECT ๊ตฌ๋ฌธ์๋ ์ธ ๊ฐ์ CASE ๋ฌธ์ด ์์ต๋๋ค.
ยท TRANSFER๋ ๋ชฉ์ ์ง๋ณด๋ค ์งง์ ์์ค๋ฅผ ์ง์ ํฉ๋๋ค.
ยท ํจ์ ๊ฒฐ๊ณผ์ ์ ํ์ด ๋์ผํ ์ ํ์ผ๋ก ๋ ๋ฒ ์ด์ ์ ์ธ๋์์ต๋๋ค. ๋ง์ฝ์
-ํ๋จ ํฑ ๋๋ ํ์ค ์ค์ ๋ชจ๋๊ฐ ํ์ฑํ๋์ด ์์ผ๋ฉด ์ค๋ฅ์ ๋๋ค.
ยท "CHARACTER" ๋ณ์๋ ์์ ๊ธธ์ด๋ก ์ ์ธ๋ฉ๋๋ค.
-Wํญ
๊ธฐ๋ณธ์ ์ผ๋ก ํญ์ ๊ณต๋ฐฑ์ผ๋ก ํ์ฉ๋์ง๋ง ํญ์ Fortran์ ๊ตฌ์ฑ์์ด ์๋๋๋ค.
๋ฌธ์ ์งํฉ์ ๋๋ค. ์ฐ์ ๋ผ์ธ์ ๊ฒฝ์ฐ 1๊ณผ 9 ์ฌ์ด์ ์ซ์๊ฐ ๋ค์ ์ค๋ ํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ง์. -Wno-ํญ ํญ์ด ๋ฐ์ํ๋ฉด ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ๋ฉ๋ชจ,
-Wno-ํญ ์ ๋ํด ํ์ฑ ์ํ์ ๋๋ค. -ํ๋จ ํฑ, -ํ์ค=f95, -ํ์ค=f2003, -ํ์ค=f2008 and -๋ฒฝ.
-๋ถ๋ํ๋ก์ฐ
์ซ์ ์์ ํํ์์ด ๋ฐ๊ฒฌ๋๋ฉด ๊ฒฝ๊ณ ๋ฅผ ์์ฑํฉ๋๋ค.
์ปดํ์ผ ์ค UNDERFLOW.
-์ํธ๋ฆฐ์ง ์๋์ฐ
์ฌ์ฉ์ ์ ์ ํ๋ก์์ ๋๋ ๋ชจ๋ ํ๋ก์์ ์ ์ด๋ฆ์ด ๋์ผํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
๋ณธ์ง์ ์ธ; ์ด ๊ฒฝ์ฐ ๋ช ์์ ์ธํฐํ์ด์ค ๋๋ "EXTERNAL" ๋๋ "INTRINSIC"
๋์ค์ ์ํ๋ ํธ์ถ๋ก ํ์ธํ๋ ค๋ฉด ์ ์ธ์ด ํ์ํ ์ ์์ต๋๋ค.
๋ด์ฌ์ /์ ์ฐจ์ . ์ด ์ต์ ์ -๋ฒฝ.
-์ฌ์ฉ๋์ง ์์-๋๋ฏธ-์ธ์
์ฌ์ฉํ์ง ์๋ ๋๋ฏธ ์ธ์์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ์ต์ ์ -๋ฒฝ.
-Wunused-๋งค๊ฐ๋ณ์
๋ฐ๋ GCC์ ์๋ฏธ -Wunused-๋งค๊ฐ๋ณ์, ์งํฌํธ๋์ ๊ตฌํ
์ต์ ์ ์ฌ์ฉํ์ง ์๋ ๋๋ฏธ ์ธ์์ ๋ํด ๊ฒฝ๊ณ ํ์ง ์์ต๋๋ค(์ฐธ์กฐ -์ฌ์ฉ๋์ง ์์-๋๋ฏธ-์ธ์), ๊ทธ๋ฌ๋
์ฌ์ฉํ์ง ์์ "PARAMETER" ๊ฐ์ ๋ํด -Wunused-๋งค๊ฐ๋ณ์ ์ ํฌํจ๋์ง ์์ต๋๋ค -๋ฒฝ ํ์ง๋ง
์ ์ํด ์์ -๋ฒฝ -์ฉ์คํธ๋ผ.
-Walign-์ปค๋จผ์ฆ
๊ธฐ๋ณธ์ ์ผ๋ก, ์งํฌํธ๋ ์ ์ ํ ๋ณ์๊ฐ ์ฑ์์ง๋ ๊ฒฝ์ฐ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค.
"COMMON" ๋ธ๋ก ๋ด ์ ๋ ฌ. ์ด ๊ฒฝ๊ณ ๋ ๋ค์์ ํตํด ๋ ์ ์์ต๋๋ค.
-Wno-์ ๋ ฌ-๊ณตํต. ๋ํ๋ณด์ญ์์ค -falign-commons.
-Wfunction ์ ๊ฑฐ
ํจ์์ ๋ํ ํธ์ถ์ด
-ffrontend ์ต์ ํ ์ต์ ์ ์ ํํฉ๋๋ค.
-Wrealloc-lhs
์ปดํ์ผ๋ฌ๊ฐ ํ ๋น ๋๋ ์ฌํ ๋น์ ์ํด ์ ์ฝ๋๋ฅผ ์ฝ์ ํ ์ ์๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ
๊ณ ์ ํ ๋น์์ ๊ณ ์ ์ ํ์ ํ ๋น ๊ฐ๋ฅํ ๋ฐฐ์ด ๋ณ์์ ๋๋ค. ํซ ๋ฃจํ์์,
Fortran 2003 ์ฌํ ๋น ๊ธฐ๋ฅ์ผ๋ก ์ธํด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ๋ฐฐ์ด์ด
์ด๋ฏธ ์ฌ๋ฐ๋ฅธ ๋ชจ์์ผ๋ก ํ ๋น๋ ๊ฒฝ์ฐ ์ ์ฒด ๋ฐฐ์ด ๋ฐฐ์ด ์ฌ์ ์ฌ์ฉ์ ๊ณ ๋ คํ์ญ์์ค.
(์: "(:,:,:)") ์ฌํ ๋น์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ผ์ชฝ์ ์๋ ๋ณ์
ํ์ธํ๋ค. ์ปดํ์ผ๋ฌ๊ฐ ์คํํ๋๋ผ๋ ๊ฒฝ๊ณ ๊ฐ ํ์๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์ฌํ ๋น ๊ฒ์ฌ๋ฅผ ์ต์ ํํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ์ค๋ฅธ์ชฝ์ ๋ค์์ด ํฌํจ๋ ๊ฒฝ์ฐ
๋์ผํ ๋ณ์์ ์ค์นผ๋ผ๋ฅผ ๊ณฑํฉ๋๋ค. ๋ํ๋ณด์ญ์์ค -frealloc-lhs.
-Wrealloc-lhs-๋ชจ๋
์ปดํ์ผ๋ฌ๊ฐ ํ ๋น ๋๋ ์ฌํ ๋น์ ์ํด ์ ์ฝ๋๋ฅผ ์ฝ์ ํ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค.
ํ ๋น ๊ฐ๋ฅํ ๋ณ์; ์ฌ๊ธฐ์๋ ์ค์นผ๋ผ ๋ฐ ํ์ ์ ํ์ด ํฌํจ๋ฉ๋๋ค.
- ์ค์ ๋น๊ต
๊ฐ์ ๋๋ ๋ถ๋ฑ์์ ๋ํด ์ค์ ๋๋ ๋ณต์์ ์ ํ์ ๋น๊ตํ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด ์ต์ ์
์ ์ํด ์์ -์ฉ์คํธ๋ผ.
-Wtarget-ํ์
ํฌ์ธํฐ ํ ๋น์ ํฌ์ธํฐ๊ฐ ๋์๋ณด๋ค ๊ธธ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ ๋ค์๊ณผ ๊ฐ์ด ์์๋ฉ๋๋ค. -๋ฒฝ.
-์๋ฌ
๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ์ค๋ฅ๋ก ๋ฐ๊ฟ๋๋ค.
์ด๋ค ์ค ์ผ๋ถ๋ Fortran์ผ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ต์ for ๋๋ฒ๊น your ํ๋ก๊ทธ๋จ or GNU ํฌํธ๋
GNU Fortran์๋ ํ๋ก๊ทธ๋จ์ด๋ ๋๋ฒ๊น ์ ์ฌ์ฉ๋๋ ๋ค์ํ ํน์ ์ต์ ์ด ์์ต๋๋ค.
GNU ํฌํธ๋ ์ปดํ์ผ๋ฌ.
-fdump-ํฌํธ๋-์๋ณธ
์์ค ํ๋ก๊ทธ๋จ์ ๋ด๋ถ๋ก ๋ณํํ ํ ๋ด๋ถ ํ์ค ํธ๋ฆฌ ์ถ๋ ฅ
๋ํ. GNU Fortran ์ปดํ์ผ๋ฌ ์์ฒด๋ฅผ ๋๋ฒ๊น ํ ๋๋ง ์ ๋ง ์ ์ฉํฉ๋๋ค.
-fdump-fortran ์ต์ ํ
ํ๋ฐํธ ์๋ ์ต์ ํ ํ ๊ตฌ๋ฌธ ๋ถ์ ํธ๋ฆฌ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. ๋๋ฒ๊น ์๋ง ์ ๋ง ์ ์ฉํฉ๋๋ค.
GNU ํฌํธ๋ ์ปดํ์ผ๋ฌ ์์ฒด.
-fdump-๊ตฌ๋ฌธ ๋ถ์ ํธ๋ฆฌ
์์ค ํ๋ก๊ทธ๋จ์ ๋ด๋ถ๋ก ๋ณํํ ํ ๋ด๋ถ ํ์ค ํธ๋ฆฌ ์ถ๋ ฅ
๋ํ. GNU Fortran ์ปดํ์ผ๋ฌ ์์ฒด๋ฅผ ๋๋ฒ๊น ํ ๋๋ง ์ ๋ง ์ ์ฉํฉ๋๋ค.
์ด ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๋์ "-fdump-fortran-original"์ ์ฌ์ฉํ์ญ์์ค.
-ffpe-ํธ๋ฉ=๋ช ๋ถ
ํ์ฑํํ ๋ถ๋ ์์์ ์์ธ ํธ๋ฉ ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค. ๋๋ถ๋ถ์ ์์คํ ์์
๋ถ๋ ์์์ ์์ธ๊ฐ ๋ฐ์ํ๊ณ ํด๋น ์์ธ์ ๋ํ ํธ๋ฉ์ด ํ์ฑํ๋๋ฉด SIGFPE
์ ํธ๊ฐ ์ ์ก๋๊ณ ํ๋ก๊ทธ๋จ์ด ์ค๋จ๋์ด ๋ค์ ์์ ์ ์ ์ฉํ ์ฝ์ด ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
๋๋ฒ๊น . ๋ช ๋ถ ๋ค์ ํญ๋ชฉ์ ์ผํ๋ก ๊ตฌ๋ถ๋(๋น์ด ์์ ์ ์์) ๋ชฉ๋ก์ ๋๋ค.
์์ธ: ๋ฌดํจ์ ("SQRT(-1.0)"์ ๊ฐ์ ์๋ชป๋ ๋ถ๋ ์์์ ์ฐ์ฐ), ์ ๋ก
(XNUMX์ผ๋ก ๋๋๊ธฐ), ๊ณผ๋ค (๋ถ๋ ์์์ ์ฐ์ฐ์ ์ค๋ฒํ๋ก), ์ธ๋ ํ๋ก
(๋ถ๋ ์์์ ์ฐ์ฐ์์ ์ธ๋ํ๋ก), ์ ํํ์ง ์์ (์ ๋ฐ๋ ์์ค
์์ ) ๋ฐ ๋น์ ์ (๋น์ ๊ท ๊ฐ์ ๋ํด ์ํ๋ ์์ ). ์ฒ์ ๋ค์ฏ
์์ธ๋ 754๊ฐ์ง IEEE XNUMX ์์ธ์ ํด๋นํ๋ ๋ฐ๋ฉด ๋ง์ง๋ง ์์ธ(๋น์ ์)
IEEE 754 ํ์ค์ ์ผ๋ถ๋ ์๋์ง๋ง ์ผ๋ถ ๊ณตํต ์ํคํ ์ฒ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
x86๊ณผ ๊ฐ์.
์ฒ์ ์ธ ๊ฐ์ง ์์ธ(๋ฌดํจ์, ์ ๋ก๋ฐ ๊ณผ๋ค) ์ข ์ข ์ฌ๊ฐํจ์ ๋ํ๋ ๋๋ค.
์ค๋ฅ ๋ฐ ํ๋ก๊ทธ๋จ์ ์ด๋ฌํ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์กฐํญ์ด ์๋ ํ,
์ด ์ธ ๊ฐ์ง ์์ธ์ ๋ํด ํธ๋ฉ์ ํ์ฑํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ถ๋ถ์ ์๋์ง๋ง ๋ง์ ๋ถ๋ ์์์ ์ฐ์ฐ์์ ๋ฐ์ฌ๋ฆผ์ผ๋ก ์ธํด ์ ๋ฐ๋ ์์ค์ด ๋ฐ์ํฉ๋๋ค.
๋ฐ๋ผ์ "ffpe-trap=inexact"๋ ์ค์ ๋ก๋ ํฅ๋ฏธ๋กญ์ง ์์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์์ธ ํธ๋ฉ์ ํ์ฑํ๋์ด ์์ง ์์ต๋๋ค.
-fno-์ญ์ถ์
์ฌ๊ฐํ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์น๋ช ์ ์ธ ์ ํธ๊ฐ ๋ฐฉ์ถ๋๋ ๊ฒฝ์ฐ
(์ธ๊ทธ๋จผํธ ์ค๋ฅ, ์๋ชป๋ ๋ช ๋ น, ๋ฒ์ค ์ค๋ฅ, ๋ถ๋ ์์์ ์์ธ ๋ฐ
์ก์ ์ด ์๋ ๋ค๋ฅธ POSIX ์ ํธ core), Fortran ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
์ค๋ฅ์ ์ญ์ถ์ ์ ์ถ๋ ฅํฉ๋๋ค. "-fno-backtrace"๋ ์ญ์ถ์ ์์ฑ์ ๋นํ์ฑํํฉ๋๋ค.
์ด ์ต์ ์ Fortran ๋ฉ์ธ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ต์ for ์๋ฐฐ ๊ท์น์ ์์
์ด ์ต์ ์ GNU Fortran์ด "INCLUDE"๋ก ์ง์ ๋ ํ์ผ์ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ์ํฅ์ ์ค๋๋ค.
์ง์๋ฌธ ๋ฐ ์ด์ ์ ์ปดํ์ผ๋ ๋ชจ๋์ ๊ฒ์ํ๋ ์์น.
๋ํ ๋ค์์์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฒฝ๋ก์๋ ์ํฅ์ ์ค๋๋ค. CPP Fortran ์์ค๋ฅผ ์ฌ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
-IDIR
์ด๋ "INCLUDE" ์ง์๋ฌธ(๋ฐ "#include"
์ ์ง์ CPP ์ ์ฒ๋ฆฌ๊ธฐ).
๋ํ ์ ์ผ๋ฐ์ ์ธ ๋์์ ์ ์ํ์ญ์์ค. -I "INCLUDE"๋ ๋ค์๊ณผ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
-I "#include"์ ํจ๊ป CPP ์ ์ฒ๋ฆฌ๊ธฐ, ์ฐพ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ํค๋.gcc
ํ์ผ ๋ฐ ๊ธฐํ ๊ทธ๋ฌํ ๊ฒ๋ค.
์ด ๊ฒฝ๋ก๋ ๊ฒ์ํ๋ ๋ฐ์๋ ์ฌ์ฉ๋ฉ๋๋ค. .mod ์ด์ ์ ์ปดํ์ผ๋ ๋ชจ๋์ด
"USE" ๋ฌธ์์ ํ์ํฉ๋๋ค.
-JDIR
์ด ์ต์ ์ ๋ฃ์ ์์น๋ฅผ ์ง์ ํฉ๋๋ค .mod ์ปดํ์ผ๋ ๋ชจ๋์ ๋ํ ํ์ผ. ๋ํ ์ถ๊ฐ๋ฉ๋๋ค
"USE" ๋ฌธ์ผ๋ก ๊ฒ์ํ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ผ๋ก ์ด๋ํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
-fintrinsic-๋ชจ๋-๊ฒฝ๋ก DIR
์ด ์ต์ ์ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ๋ด์ฅ ๋ชจ๋์ ์์น๋ฅผ โโ์ง์ ํฉ๋๋ค.
์ปดํ์ผ๋ฌ์์ ์์ํ๋ ๊ธฐ๋ณธ ์์น์ ์์ต๋๋ค.
์ํฅ๋ ฅ ์ ์, ์ฐ๊ฒฐ ๋จ๊ณ
์ด๋ฌํ ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ฒด ํ์ผ์ ์คํ ํ์ผ์ ์ฐ๊ฒฐํ ๋ ์๋ํฉ๋๋ค.
๊ฒฐ๊ณผ๋ฌผ ํ์ผ. ์ปดํ์ผ๋ฌ๊ฐ ๋งํฌ ๋จ๊ณ๋ฅผ ์ํํ์ง ์์ผ๋ฉด ์๋ฏธ๊ฐ ์์ต๋๋ค.
-์ ์ -libgfortran
์ ๊ณตํ๋ ์์คํ ์์ libgfortran ๊ณต์ ๋ฐ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก์ ์ด ์ต์ ์
์ ์ ๋ฒ์ ์ ๊ฐ์ ๋ก ์ฌ์ฉํฉ๋๋ค. ๊ณต์ ๋ฒ์ ์ด ์๋ ๊ฒฝ์ฐ libgfortran ์ง์ด์ก๋ค
์ปดํ์ผ๋ฌ๊ฐ ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ํฅ๋ ฅ ๋ฐํ์ ํ๋
์ด ์ต์ ์ GNU Fortran์ผ๋ก ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ์ ๋ฐํ์ ๋์์ ์ํฅ์ ์ค๋๋ค.
-f๋ณํ=๋ณํ
ํ์์ด ์ง์ ๋์ง ์์ ํ์ผ์ ๋ํ ๋ฐ์ดํฐ ํํ์ ์ง์ ํฉ๋๋ค. ์ ํจํ ๋ณํ ๊ฐ
์์น : ์ถ์ , ๊ธฐ๋ณธ๊ฐ; ๊ตํ, ๋น ์๋์๊ณผ ๋ฆฌํ ์๋์ ์ฌ์ด๋ฅผ ๊ตํํฉ๋๋ค. ๋น ์๋์์ฌ์ฉ
ํฌ๋งท๋์ง ์์ ํ์ผ์ ๋ํ ๋น ์๋์ ํํ; ๋ฆฌํ ์๋์, ๋ฆฌํ ์๋์ ์ฌ์ฉ
ํฌ๋งท๋์ง ์์ ํ์ผ์ ๋ํ ํํ.
์ด option ์ด an ํจ๊ณผ ๋ง ์ธ์ ์ต์ํ in ์ ์, ๋ณธ๊ด ํ๋ก๊ทธ๋จ) ์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ "๋ณํ๊ฒ ํ๋ค" ์ง์ ์
and ์ ์, GFORTRAN_CONVERT_UNIT ํ๊ฒฝ ๋ณ์ ๋ณด์ ์ ์, ๋ํดํธ ๊ฐ ์ง์ by
-f๋ณํ.
-frecord-๋ง์ปค=๊ธธ์ด
ํฌ๋งท๋์ง ์์ ํ์ผ์ ๋ํ ๋ ์ฝ๋ ๋ง์ปค์ ๊ธธ์ด๋ฅผ ์ง์ ํฉ๋๋ค. ์ ํจํ ๊ฐ ๊ธธ์ด
4์ 8์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 4์ ๋๋ค. ์ด is ๋ค๋ฅธ ์ ๋๋ฌด ์ด๋ฅธ ๋ฒ์ of ์งํฌํธ๋,
๋๋ถ๋ถ์ ์์คํ ์์ ๊ธฐ๋ณธ ๋ ์ฝ๋ ๋ง์ปค ๊ธธ์ด๋ฅผ 8๋ก ์ง์ ํ์ต๋๋ค. ์ํ๋ ๊ฒฝ์ฐ
์ ์ด์ ๋ฒ์ ๊ณผ ํธํ๋๋ ํ์ผ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ์งํฌํธ๋์ฌ์ฉ
-frecord-marker=8.
-fmax-ํ์ ๋ ์ฝ๋ ๊ธธ์ด=๊ธธ์ด
ํ์ ๋ ์ฝ๋์ ์ต๋ ๊ธธ์ด๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธธ์ด์ ๋ํด ํ์ฉ๋๋ ์ต๋ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ์ด๊ธฐ๋ ํ 2147483639์ ๋๋ค. gfortran์์ ์ฌ์ฉํ ๋๋ง ์ ๋ง ์ ์ฉํฉ๋๋ค.
ํ ์คํธ ์ค์ํธ.
-fsign-XNUMX
ํ์ฑํ๋๋ฉด ๋ถํธ ๋นํธ๊ฐ ์ค์ ๋ ๊ฐ์ด XNUMX์ธ ๋ถ๋ ์์์ ์ซ์๊ฐ ๊ธฐ๋ก๋ฉ๋๋ค.
ํ์ํ๋ ์ถ๋ ฅ์์ โโ์์๋ก "SIGN"์์ ์์๋ก ์ฒ๋ฆฌ๋จ
๋ณธ์ง์ ์ธ. -fno-sign-XNUMX XNUMX ๊ฐ(๋๋ ๊ฐ์ ์์ ๋ถํธ๋ฅผ ์ธ์ํ์ง ์์
I/O์ ๊ฒฝ์ฐ XNUMX์ผ๋ก ๋ฐ์ฌ๋ฆผ๋จ) ๋ฐ "SIGN" ๋ด์ฅ์์ XNUMX์ ์์๋ก ๊ฐ์ฃผํฉ๋๋ค.
Fortran 77๊ณผ์ ํธํ์ฑ์ ์ํด. ๊ธฐ๋ณธ๊ฐ์ -fsign-XNUMX.
์ต์ for ์ํธ ์ธ๋ ๊ท์น
์ด๋ฌํ ๊ธฐ๊ณ ๋ ๋ฆฝ์ ์ธ ์ต์ ์ ์ฝ๋์์ ์ฌ์ฉ๋๋ ์ธํฐํ์ด์ค ๊ท์น์ ์ ์ดํฉ๋๋ค.
์ธ๋.
๊ทธ๋ค ๋๋ถ๋ถ์ ๊ธ์ ์ ์ธ ํํ์ ๋ถ์ ์ ์ธ ํํ๋ฅผ ๋ชจ๋ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ๋ถ์ ์ ์ธ ํํ - ํธํธ ๊ฒ
-fno-foo. ์๋ ํ์๋ ์์ ์ค ํ๋๋ง ๋์ด๋์ด ์์ต๋๋ค.
๊ธฐ๋ณธ. ๋ค์ ์ค ํ๋๋ฅผ ์ ๊ฑฐํ์ฌ ๋ค๋ฅธ ํ์์ ํ์ ํ ์ ์์ต๋๋ค. ์๋ - ๋๋ ์ถ๊ฐํฉ๋๋ค.
-fno-์๋
๊ฐ ํ๋ก๊ทธ๋จ ๋จ์(RECURSIVE๋ก ํ์๋ ๋จ์ ์ ์ธ)๋ฅผ "SAVE" ๋ฌธ์ฒ๋ผ ์ทจ๊ธํฉ๋๋ค.
๋ชจ๋ ์ง์ญ ๋ณ์์ ๊ทธ ์์ ์ฐธ์กฐ๋ ๋ฐฐ์ด์ ๋ํด ์ง์ ๋์์ต๋๋ค. ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค
์ผ๋ฐ์ ์ธ ๋ธ๋ก. (์ผ๋ถ ํฌํธ๋ ์ปดํ์ผ๋ฌ๋ ์ด๋ฆ ์๋์ ์ด ์ต์ ์ ์ ๊ณตํฉ๋๋ค. -๊ณต์ or
-์ ์ฅ.) ๊ธฐ๋ณธ๊ฐ์ -f์๋, ๋ ์์ ์ง์ญ ๋ณ์์ ์คํ์ ์ฌ์ฉํฉ๋๋ค.
์ ์ํด ์ฃผ์ด์ง ๊ฐ๋ณด๋ค -fmax-์คํ-var-ํฌ๊ธฐ. ์ต์ ์ ์ฌ์ฉ - ์ฌ๊ท ์ฌ์ฉํ์ง
์ ์ ๋ฉ๋ชจ๋ฆฌ.
-ff2c
์ ์ํด ์์ฑ๋ ์ฝ๋์ ํธํ๋๋๋ก ์ค๊ณ๋ ์ฝ๋ ์์ฑ g77 and f2c.
์์ ์ฌ์ฉํ๋ ํธ์ถ ๊ท์น g77 (์๋ ๊ตฌํ๋ f2c) ๊ธฐ๋ฅ ํ์
๊ทธ ๋ฐํ ์ ํ ๊ธฐ๋ณธ "REAL"์ ์ค์ ๋ก C ์ ํ "๋๋ธ"์ ๋ฐํํ๊ณ ํจ์๋
ํธ์ถ์์ ์ถ๊ฐ ์ธ์๋ฅผ ํตํด ๊ฐ์ ๋ฐํํ๋ ๋ฐํ ์ ํ "COMPLEX"
๋ฐํ ๊ฐ์ ์ ์ฅํ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์ํ์ค์ ๋๋ค. ๊ธฐ๋ณธ GNU์์
ํธ์ถ ๊ท์น, ์ด๋ฌํ ํจ์๋ ๋จ์ํ GNU์์์ ๊ฐ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
C---๊ธฐ๋ณธ "REAL" ํจ์๋ C ์ ํ "float"๋ฅผ ๋ฐํํ๊ณ "COMPLEX" ํจ์๋ ๋ฐํํฉ๋๋ค.
GNU C ์ ํ "๋ณต์กํ". ๋ํ ์ด ์ต์ ์ ๋ค์์ ์๋ฏธํฉ๋๋ค. -fsecond-๋ฐ์ค
์ต์ ์ด ์๋ ๊ฒฝ์ฐ -fno-second-๋ฐ์ค ๋ช ์์ ์ผ๋ก ์์ฒญ๋ฉ๋๋ค.
์ด๊ฒ์ ๋ค์๊ณผ ์ธํฐํ์ด์คํ๋ ์ฝ๋ ์์ฑ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. libgfortran
๋์๊ด.
์ฃผ์: ๋ค์๊ณผ ๊ฐ์ด ์ปดํ์ผ๋ Fortran ์ฝ๋๋ฅผ ํผํฉํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด ์๋๋๋ค. -ff2c ์ฝ๋๋ก
๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ปดํ์ผ -fno-f2c ํธ์ถ ๊ท์น, "COMPLEX" ํธ์ถ ๋๋
๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ ๋ถ๋ถ ๊ฐ์ ๊ธฐ๋ณธ "REAL" ๊ธฐ๋ฅ
ํธ์ถ ๊ท์น์ ์คํ ์ ์ค๋จ๋ฉ๋๋ค.
์ฃผ์: ์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ๋ณธ "REAL" ์ ํ์ ๋ด์ฅ ํจ์๋ฅผ ์ ๋ฌํ๋ ์ฝ๋๊ฐ ์ค๋จ๋ฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌํ์ด ์ฌ์ฉํ๋ฏ๋ก ์ค์ ์ธ์๋ก "COMPLEX" ๋๋ "COMPLEX" -fno-f2c
ํธ์ถ ๊ท์น.
-fno-๋ฐ์ค
๋ค์์ ์ถ๊ฐํ์ฌ Fortran ์์ค ํ์ผ์ ์ง์ ๋ ์ํฐํฐ์ ์ด๋ฆ์ ๋ณํํ์ง ๋ง์ญ์์ค.
๊ทธ๋ค์๊ฒ ๋ฐ์ค์ ๊ธ์ต๋๋ค.
์ -ํ๋ฉ ์ฌ์ค์ GNU Fortran์ ์ธ๋ถ ์ด๋ฆ์ ํ๋์ ๋ฐ์ค์ ์ถ๊ฐํฉ๋๋ค.
๋ฐ์ค ์์ด. ์ด๊ฒ์ ๋ง์ ์ฌ๋๋ค์ด ์์ฑํ ์ฝ๋์์ ํธํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ํ๋ฉ๋๋ค.
UNIX ํฌํธ๋ ์ปดํ์ผ๋ฌ.
์ฃผ์: GNU Fortran์ ๊ธฐ๋ณธ ๋์์ ๋ค์๊ณผ ํธํ๋์ง ์์ต๋๋ค. f2c and g77, ์ ๋ฐ
์ฌ์ฉ -ff2c GNU Fortran์ผ๋ก ์ปดํ์ผ๋ ๊ฐ์ฒด ํ์ผ์ ์ํ๋ ๊ฒฝ์ฐ ์ต์
์ด๋ฌํ ๋๊ตฌ๋ก ๋ง๋ ๊ฐ์ฒด ์ฝ๋์ ํธํ๋ฉ๋๋ค.
์ฌ์ฉ -fno-๋ฐ์ค ๋ฌธ์ ๋ฅผ ์คํํ์ง ์๋ ํ ๊ถ์ฅํ์ง ์์ต๋๋ค.
GNU Fortran์ ๊ธฐ์กด ์์คํ ํ๊ฒฝ์ ํตํฉํ๋ ๊ฒ๊ณผ ๊ฐ์(vis-a-vis
๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋๊ตฌ ๋ฑ).
์๋ฅผ ๋ค์ด -ํ๋ฉ, ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ ํฉ๋๋ค. -fcase-๋ฎ์ and
"j()" ๋ฐ "max_count()"๋ ์ธ๋ถ ํจ์์ด๊ณ "my_var" ๋ฐ "lvar"๋
์ง์ญ ๋ณ์, ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น๋ฌธ
I = J() + MAX_COUNT(MY_VAR, LVAR)
๋ค์๊ณผ ์ ์ฌํ ๊ฒ์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
i = j_() + max_count__(&my_var__, &lvar);
์ -fno-๋ฐ์ค, ๋์ผํ ๋ช ๋ น๋ฌธ์ด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ๋ฉ๋๋ค.
i = j() + max_count(&my_var, &lvar);
์ฌ์ฉ -fno-๋ฐ์ค ์ฌ์ฉ์ ์ ์ ์ด๋ฆ์ ์ง์ ์ง์ ํ ์ ์๋ ๋ฐ๋ฉด
๋๋ฒ๊น ๋ฐ GNU Fortran ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ธ์ด์ ์ธํฐํ์ด์คํ ๋.
์ด๋ฆ์ด ์ผ์นํ๊ธฐ ๋๋ฌธ์ ์ง์ ์ ์ํด ๊ตฌํ๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํฉ๋๋ค.
์ธ๋ถ ์ด๋ฆ์ ๋ํ GNU Fortran์ ๋ค๋ฅธ ์ผ๋ถ์์ ๊ตฌํํ ์ธํฐํ์ด์ค์ ์ผ์นํฉ๋๋ค.
๊ฐ์ ์ด๋ฆ์ ์ธ์ด. ์ฆ, GNU Fortran์์ ์์ฑํ ์ฝ๋๋ฅผ ๋ค์ ๋งํฌ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค.
์ด ๋ฐฉ๋ฒ์ด๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ปดํ์ผ๋ฌ์์ ์์ฑํ ์ฝ๋๋
์ ์ฒด ์๋ฃจ์ ์ ์์ ๋ถ๋ถ ---๋ ์ปดํ์ผ๋ฌ์์ ์์ฑ๋ ์ฝ๋๋ฅผ
์ด๋ฆ ์ง์ ์ด์ธ์ ๋ฌธ์ ์ ๋์ํ๋ฉด ์๋นํ ๋ ธ๋ ฅ์ด ํ์ํ ์ ์์ผ๋ฉฐ ์ด๋ฆ ์ง์ ๊ณผ ๋ฌ๋ฆฌ
๋ถ์ผ์น, ๋ง์ปค๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ๋ค๋ฅธ ์์ญ์์ ๋ถ์ผ์น๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
๋ํ, -fno-๋ฐ์ค, ์ถ๊ฐ๋ ๋ฐ์ค์ด ์์ผ๋ฉด
์ฌ์ฉ์ ์ ์ ์ธ๋ถ ์ด๋ฆ์ด ์ด๋ฆ๊ณผ ์ถฉ๋ํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์
์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํด๊ฒฐ๋์ง ์์ ์ฐธ์กฐ ๋ฒ๊ทธ๋ฅผ ์๋นํ ์ฐพ์ ์ ์์ต๋๋ค.
์ด๋ค ๊ฒฝ์ฐ์๋ ์ด๋ ต์ต๋๋ค---ํ๋ก๊ทธ๋จ ์คํ ์๊ฐ์ ๋ฐ์ํ ์ ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
๋ฐํ์์ ๋ฒ๊ทธ๊ฐ ์๋ ๋์.
GNU Fortran์ ํฅํ ๋ฒ์ ์์๋ ์ด๋ฆ ์ง์ ๋ฐ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ์ฌ
๋๋ฒ๊น ์๋ ํญ์ ์์ค์ ๋ํ๋๋ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค.
๋ง์ปค์์ ๋ณผ ์ ์๋ ์ด๋ฆ์ ์ค์๋ก
ํธํ๋์ง ์๋ ์ธํฐํ์ด์ค๊ฐ ์๋ ์ ์ฐจ
-fno-์ ์ฒด ํ์ผ
์ด ํ๋๊ทธ๋ ์ปดํ์ผ๋ฌ๊ฐ ํ์ผ์ ๊ฐ ํ๋ก์์ ๋ฅผ ํด์ํ๊ณ ๋ณํํ๋๋ก ํฉ๋๋ค.
๊ฐ๋ผ์ ธ.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฒด ํ์ผ์ด ๊ตฌ๋ฌธ ๋ถ์๋์ด ๋จ์ผ ํ๋ฐํธ ์๋ ํธ๋ฆฌ์ ๋ฐฐ์น๋ฉ๋๋ค. ๋์
ํด๊ฒฐ, ๋ชจ๋ ์ผ๋ฐ์ ์ธ ์ ๊ฒ ๋ฐ ์์ ์ธ์ ์ธ๋ถ ์ฐธ์กฐ
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํด๋น ํ๋ก์์ ์ ๋์ผํ ํ์ผ ํจ๊ณผ ํด๊ฒฐ์ ์๋ ํ๋ก์์
์ด๋ฏธ ์๋ฃ๋์์ผ๋ฉฐ ์ธํฐํ์ด์ค๋ฅผ ํ์ธํฉ๋๋ค. ์์กด์ฑ์ ๋ค์์ ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐ๋ฉ๋๋ค.
ํ์ผ์ด ๋ฐฑ์๋ ํธ๋ฆฌ๋ก ๋ณํ๋๋ ์์์ ๋๋ค. ๋ฐ๋ผ์ ์ ์ฐจ
์ฐธ์กฐ๋ ๋ด์ฉ์ ์ฐธ์กฐ ๋ฐ ๋ฐฑ์๋ ๋ณต์ ์ ์ ๋ฒ์ญ๋ฉ๋๋ค.
ํธ๋ฆฌ ์ ์ธ์ด ์ ๊ฑฐ๋์์ต๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -fno-์ ์ฒด ํ์ผ ์ต์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ์๋ชป๋ ์ฝ๋๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
-fsecond-๋ฐ์ค
๊ธฐ๋ณธ์ ์ผ๋ก GNU Fortran์ ์ธ๋ถ ์ด๋ฆ์ ๋ฐ์ค์ ์ถ๊ฐํฉ๋๋ค. ์ด ์ต์ ์ด
์ฌ์ฉ๋ GNU Fortran์ ๋ฐ์ค๊ณผ ํ๋์ ๋ฐ์ค์ด ์๋ ์ด๋ฆ์ ๋ ๊ฐ์ ๋ฐ์ค์ ์ถ๊ฐํฉ๋๋ค.
๋ฐ์ค ์์ด ์ธ๋ถ ์ด๋ฆ์ผ๋ก. GNU Fortran์ ๋ํ ๋ ๊ฐ์ ๋ฐ์ค์ ์ถ๊ฐํฉ๋๋ค.
์ธ๋ถ ์ด๋ฆ๊ณผ์ ์ด๋ฆ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ๋ฐ์ค์ด ์๋ ๋ด๋ถ ์ด๋ฆ.
์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํจ๊ณผ๊ฐ ์์ต๋๋ค. -fno-๋ฐ์ค ์ ํจํฉ๋๋ค. ์ ์ํด ์์๋ฉ๋๋ค.
-ff2c ์ต์ ์ ์ ํํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด "MAX_COUNT"์ ๊ฐ์ ์ธ๋ถ ์ด๋ฆ์ด
"max_count_" ๋์ ๋งํฌ ์๊ฐ ์ธ๋ถ ๊ธฐํธ "max_count__"์ ๋ํ ์ฐธ์กฐ์ ๋๋ค.
๋ค์๊ณผ์ ํธํ์ฑ์ ์ํด ํ์ํฉ๋๋ค. g77 and f2c, ๊ทธ๋ฆฌ๊ณ ๋ค์์ ์ฌ์ฉํ์ฌ ์์๋ฉ๋๋ค.
-ff2c ์ต์ ์ ์ ํํฉ๋๋ค.
-fco๋ฐฐ์ด=
์์
coarray ์ง์์ ๋นํ์ฑํํฉ๋๋ค. coarray ์ ์ธ ๋ฐ ์ด๋ฏธ์ง ์ ์ด ๋ฌธ ์ฌ์ฉ
์ปดํ์ผ ํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. (๊ธฐ๋ณธ)
๋จ์ผ
๋จ์ผ ์ด๋ฏธ์ง ๋ชจ๋, ์ฆ "num_images()"๋ ํญ์ XNUMX์ ๋๋ค.
lib ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฐ coarray ๋ณ๋ ฌํ; ์ ํฉํ GNU ํฌํธ๋ coarray ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
-์ํ์ฒดํฌ=
๋ฐํ์ ๊ฒ์ฌ ์์ฑ์ ํ์ฑํํฉ๋๋ค. ์ธ์๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก์ด์ด์ผ ํฉ๋๋ค.
๋ค์ ํค์๋ ์ค.
๋ชจ๋ ๋ชจ๋ ๋ฐํ์ ํ ์คํธ ํ์ฑํ -f์ฒดํฌ.
์ด๋ ์ด ์์ ์ง์
์ค์ ์ธ์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์์ ๋ฐฐ์ด์ด ๋ค์๊ณผ ๊ฐ์์ผ ํ๋ ๊ฒฝ์ฐ ๋ฐํ์์ ๊ฒฝ๊ณ ํฉ๋๋ค.
์์ฑ. ์ด ๊ฒฝ๊ณ ์ ์ํด ์์ฑ๋ ์ ๋ณด๋ ๋๋๋ก ๋ค์์์ ์ ์ฉํฉ๋๋ค.
์ด๋ฌํ ์ผ์์ ์ธ ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ต์ ํํฉ๋๋ค.
์ฐธ๊ณ : ๊ฒฝ๊ณ ๋ ์์น๋น ํ ๋ฒ๋ง ์ธ์๋ฉ๋๋ค.
๋ฒ์
๋ฐฐ์ด ์ฒจ์์ ์ ์ธ๋ ์ฒจ์์ ๋ํ ๋ฐํ์ ๊ฒ์ฌ ์์ฑ ํ์ฑํ
์ต์๊ฐ๊ณผ ์ต๋๊ฐ. ๋ํ ๊ฐ์ ๋ฐ ์ง์ฐ์ ๋ํ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ฅผ ํ์ธํฉ๋๋ค.
์ค์ ํ ๋น๋ ๋ฒ์์ ๋ํด ๋ฐฐ์ด์ ํ์ฑํ๊ณ ๋ชจ๋ ๋ฌธ์์ด์ด
๋ช ์์ typespec์ด ์๋ ๋ฌธ์ ๋ฐฐ์ด ์์ฑ์์ ๊ธธ์ด๋ ๋์ผํฉ๋๋ค.
์ผ๋ถ ๊ฒ์ฌ๋ ๋ค์์ ์๊ตฌํฉ๋๋ค. -fcheck=๊ฒฝ๊ณ ๋ฉ์ธ ์ปดํ์ผ์ ์ํด ์ค์ ๋ฉ๋๋ค.
ํ๋ก๊ทธ๋จ)
์ฐธ๊ณ : ์์ผ๋ก ์ฌ๊ธฐ์๋ ๋ค๋ฅธ ํ์์ ํ์ธ(์: ํ์ธ)๋ ํฌํจ๋ ์ ์์ต๋๋ค.
ํ์ ๋ฌธ์์ด ์ฐธ์กฐ.
do ๋ฃจํ ๋ฐ๋ณต์ ์๋ชป๋ ์์ ์ ๋ํ ๋ฐํ์ ๊ฒ์ฌ ์์ฑ ํ์ฑํ
๋ณ์.
(MEM) ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ํ ๋ฐํ์ ๊ฒ์ฌ ์์ฑ์ ํ์ฑํํฉ๋๋ค. ์ฐธ๊ณ : ์ด ์ต์ ์
"ALLOCATE" ๋ฌธ์ ์ฌ์ฉํ๋ ๋ช ์์ ํ ๋น์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
ํญ์ ํ์ธํ์ต๋๋ค.
ํฌ์ธํฐ
ํฌ์ธํฐ ๋ฐ ํ ๋น ๊ฐ๋ฅ ํญ๋ชฉ์ ๋ํ ๋ฐํ์ ๊ฒ์ฌ ์์ฑ์ ํ์ฑํํฉ๋๋ค.
์ฌ๊ท
์ฌ๊ท์ ์ผ๋ก ํธ์ถ๋ ์๋ธ๋ฃจํด์ ๋ํ ๋ฐํ์ ๊ฒ์ฌ ์์ฑ์ ํ์ฑํํ๊ณ
์ฌ๊ท๋ก ํ์๋์ง ์์ ํจ์. ๋ํ๋ณด์ญ์์ค - ์ฌ๊ท. ์ฐธ๊ณ : ์ด
์ฒดํฌ๋ OpenMP ํ๋ก๊ทธ๋จ์์ ์๋ํ์ง ์์ผ๋ฉฐ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋นํ์ฑํ๋ฉ๋๋ค.
- ์ฌ๊ท and -fopenmp.
-fbounds-์ฒดํฌ
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ณ์นญ -fcheck=๊ฒฝ๊ณ.
-fcheck-๋ฐฐ์ด-์์
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ณ์นญ -fcheck=๋ฐฐ์ด ์์ ์ง์.
-fmax-๋ฐฐ์ด ์์ฑ์=n
์ด ์ต์ ์ ๋ฐฐ์ด ์์ฑ์์์ ํ์ฉ๋๋ ์ํ์ ๋๋ฆฌ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ ์ฝ๋์์๋ ์ปดํ์ผ ํ์์ ๋ฐฐ์ด์ ํ์ฅํ๋ ค๋ฉด ์ด ์ต์ ์ด ํ์ํฉ๋๋ค.
ํ๋ก๊ทธ๋จ ํ ์คํธ
์์์ ์์
์ ์ j
์ ์, ๋งค๊ฐ๋ณ์ :: n = 100000
์ ์, ๋งค๊ฐ๋ณ์ :: i(n) = (/ (2*j, j = 1, n) /)
์ธ์ '(10(I0,1X))', i
ํ๋ก๊ทธ๋จ ํ ์คํธ ์ข ๋ฃ
์ฃผ์: ์ด option ๋ฆฌ๋ ์ ๊ธด ํธ์งํ๋ค ์๋ and ์ง๋์น๊ฒ ๋์ ๋์
ํ์ผ.
์ ๊ธฐ๋ณธ๊ฐ n 65535์ ๋๋ค.
-fmax-์คํ-var-ํฌ๊ธฐ=n
์ด ์ต์ ์ ๋ฐฐ์ด์ ๋ฃ์ ๊ฐ์ฅ ํฐ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ง์ ํฉ๋๋ค.
์คํ; ํฌ๊ธฐ๊ฐ ์ด๊ณผ๋๋ฉด ์ ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค(๋ก ํ์๋ ์ ์ฐจ๋ ์ ์ธ
์ฌ๊ท). ์ต์ ์ ์ฌ์ฉ - ์ฌ๊ท ํ์ง ์๋ ์ฌ๊ท์ ์ ์ฐจ๋ฅผ ํ์ฉํ๊ธฐ ์ํด
RECURSIVE ์์ฑ์ด ์๊ฑฐ๋ ๋ณ๋ ฌ ํ๋ก๊ทธ๋จ์ฉ์ ๋๋ค. ์ฌ์ฉํ๋ค -fno-์๋ ์ ๋ ์ฌ์ฉํ์ง ์๋๋ค
์คํ.
์ด ์ต์ ์ ํ์ฌ ์์ ๋ฒ์๋ก ์ ์ธ๋ ๋ก์ปฌ ๋ฐฐ์ด์๋ง ์ํฅ์ ๋ฏธ์น๋ฉฐ
๋ชจ๋ ๋ฌธ์ ๋ณ์์ ์ ์ฉ๋์ง๋ ์์ต๋๋ค. GNU Fortran์ ํฅํ ๋ฒ์ ์ ์ด๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
ํ๋.
์ ๊ธฐ๋ณธ๊ฐ n 32768์ ๋๋ค.
-fstack-๋ฐฐ์ด
์ด ์ต์ ์ ์ถ๊ฐํ๋ฉด Fortran ์ปดํ์ผ๋ฌ๊ฐ ๋ชจ๋ ๋ก์ปฌ ๋ฐฐ์ด์ ๋ฃ๊ฒ ๋ฉ๋๋ค.
์คํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ ์๋ ํฌ๊ธฐ๊ฐ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ด ๋งค์ฐ ํฐ ๋ก์ปฌ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์ผ๋ถ์์๋ ์คํ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๋ฐํ์ ์ ํ์ ํ์ฅํด์ผ ํ ์๋ ์์ต๋๋ค.
์ด์์ฒด์ . ์ด ํ๋๊ทธ๋ ์ต์ ํ ์์ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. -์คํ์คํธ.
-fpack ํ์
์ด ์ต์ ์ GNU Fortran์ด ํ์๋ ์ ํ ๋ฉค๋ฒ๋ฅผ ๊ฐ๋ฅํ ํ ๊ฐ๊น๊ฒ ๋ฌถ๋๋ก ์ง์ํฉ๋๋ค.
์ด ์ต์ ์ผ๋ก ์ปดํ์ผ๋ ์ฝ๋๋ ๋ค์ ์์ด ์ปดํ์ผ๋ ์ฝ๋์ ํธํ๋์ง ์์ ์ ์์ต๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์คํ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค.
-frepack-๋ฐฐ์ด
๊ฒฝ์ฐ์ ๋ฐ๋ผ GNU Fortran์ ๋ค์์ ํตํด ๊ฐ์ ๋ ๋ชจ์ ๋ฐฐ์ด ์น์ ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
๋น์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ค๋ช ํ๋ ์ค๋ช ์. ์ด ์ต์ ์ ์ฝ๋๋ฅผ
๋ฐํ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์ ๋ธ๋ก์ผ๋ก ๋ค์ ์์ถํ๋ ํจ์ ํ๋กค๋ก๊ทธ.
๊ทธ๋ฌ๋ฉด ์ด๋ ์ด์ ๋ ๋น ๋ฅด๊ฒ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์๊ฐ ํ ์ ์์ต๋๋ค
ํนํ ์ ๋ฌ๋ ๋ฐ์ดํฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋ ํจ์ ํธ์ถ์ ๋ํ ์๋นํ ์ค๋ฒํค๋
๋ถ์ฐ์.
-fshort ์ด๊ฑฐํ
์ด ์ต์ ์ ๋ค์์ผ๋ก ์ปดํ์ผ๋ C ์ฝ๋์์ ์ํธ ์ด์ฉ์ฑ์ ์ํด ์ ๊ณต๋ฉ๋๋ค.
-fshort ์ด๊ฑฐํ ์ต์ . GNU Fortran์ด ๊ฐ์ฅ ์์ "INTEGER" ์ข ๋ฅ๋ฅผ ์ ํํ๊ฒ ํฉ๋๋ค.
์ฃผ์ด์ง ์ด๊ฑฐ์ ์ธํธ๊ฐ ์ ํฉํ๊ณ ๋ชจ๋ ์ด๊ฑฐ์์ ์ด๋ฐ ์ข ๋ฅ๋ฅผ ์ ๊ณตํฉ๋๋ค.
-fexternal-blas
์ด ์ต์ ์ ์งํฌํธ๋ ์ผ๋ถ ํ๋ ฌ์ ๋ํ BLAS ํจ์ ํธ์ถ ์์ฑ
์์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๋์ "MATMUL"๊ณผ ๊ฐ์ ์์
๊ด๋ จ๋ ํ๋ ฌ์ด ์ฃผ์ด์ง ํ๊ณ๋ณด๋ค ํฝ๋๋ค(์ฐธ์กฐ -fblas-matmul-์ ํ). ์ด๊ฒ์ ์ ์์ต๋๋ค
์ต์ ํ๋ ๊ณต๊ธ์ ์ฒด BLAS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์์ต์ฑ์ด ์์ต๋๋ค. BLAS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
๋งํฌ ์๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค.
-fblas-matmul-์ ํ=n
์ค์ํ ๊ฒฝ์ฐ์๋ง -fexternal-blas ์ ํจํฉ๋๋ค. ํ๋ ฌ์ ํ๋ ฌ ๊ณฑ์
๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ํฌ๊ธฐ๋ก n BLAS ํจ์ ํธ์ถ์ ์ํด ์ํ๋๋ฉฐ,
๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฒ๋ฆฌํ๋ ๋์ ์งํฌํธ๋ ๋ด๋ถ ์๊ณ ๋ฆฌ์ฆ. ํ๋ ฌ์ด ๊ด๋ จ๋ ๊ฒฝ์ฐ
์ ์ฌ๊ฐํ์ด ์๋ ๊ฒฝ์ฐ ๊ธฐํ ํ๊ท ์ ์ฌ์ฉํ์ฌ ํฌ๊ธฐ ๋น๊ต๋ฅผ ์ํํฉ๋๋ค.
์ธ์ ๋ฐ ๊ฒฐ๊ณผ ํ๋ ฌ์ ์ฐจ์.
์ ๊ธฐ๋ณธ๊ฐ n 30์ ๋๋ค.
- ์ฌ๊ท
๋ชจ๋ ๋ก์ปฌ ๋ฐฐ์ด์ ์คํ์ ๊ฐ์ ๋ก ํ ๋นํ์ฌ ๊ฐ์ ์ฌ๊ท๋ฅผ ํ์ฉํฉ๋๋ค.
์ด ํ๋๊ทธ๋ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. -fmax-์คํ-var-ํฌ๊ธฐ= or -fno-์๋.
-finit-local-XNUMX
- ์ ํ ์ ์ =n
-์ต์์ค์=
- ์ ํ ๋ ผ๋ฆฌ =
-ํ์ ๋ฌธ์=n
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -finit-local-XNUMX ์ต์ ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ก์ปฌ "INTEGER"๋ฅผ ์ด๊ธฐํํ๋๋ก ์ง์ํฉ๋๋ค.
"REAL" ๋ฐ "COMPLEX" ๋ณ์๋ XNUMX, "LOGICAL" ๋ณ์๋ false, "CHARACTER"
๋ ๋ฐ์ดํธ ๋ฌธ์์ด์ ๋ํ ๋ณ์. ๋ ์ธ๋ถํ๋ ์ด๊ธฐํ ์ต์ ์
์ ๊ณต ํ - ์ ํ ์ ์ =n, -์ต์์ค์= (๋ํ
๋ก์ปฌ "COMPLEX" ๋ณ์์ ์ค์๋ถ์ ํ์๋ถ๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
- ์ ํ ๋ ผ๋ฆฌ =๋ฐ -ํ์ ๋ฌธ์=n (์ด๋์ n ASCII ๋ฌธ์์ ๋๋ค
๊ฐ) ์ต์ . ์ด๋ฌํ ์ต์ ์ ์ด๊ธฐํ๋์ง ์์ต๋๋ค.
ยท ํ ๋น ๊ฐ๋ฅํ ๋ฐฐ์ด
ยท ํ์ํ ๋ณ์์ ๊ตฌ์ฑ์์
ยท "EQUIVALENCE" ๋ฌธ์ ๋ํ๋๋ ๋ณ์.
(์ด๋ฌํ ์ ํ ์ฌํญ์ ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์ ์์ต๋๋ค.)
์ฐธ๊ณ ๋ก -finit-real=nan ์ต์ ์ "REAL" ๋ฐ "COMPLEX" ๋ณ์๋ฅผ
์กฐ์ฉํ ๋. ์๊ทธ๋๋ง NaN์ ๊ฒฝ์ฐ -finit-real=snan; ๊ทธ๋ฌ๋ ์ปดํ์ผ ์๊ฐ
์ต์ ํ๋ ์ด๋ฅผ ์กฐ์ฉํ NaN์ผ๋ก ๋ณํํ ์ ์์ผ๋ฉฐ ํธ๋ํ์ ํ์ฑํํด์ผ ํฉ๋๋ค.
(์๋ฅผ ํตํด -ffpe ํธ๋ฉ).
๋ง์ง๋ง์ผ๋ก -ํ์ -* ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์์ผ๋ก ๋ง๋ญ๋๋ค.
์ ์ํด ๋ฐฉ์ถ๋์์ ๊ฒ์ ๋๋ค. -์ด๊ธฐํ๋์ง ์์ ์ํฅ์ ๋ฐ๋ ์ง์ญ ๋ณ์์ ๋ํด
-falign-commons
๊ธฐ๋ณธ์ ์ผ๋ก, ์งํฌํธ๋ "COMMON" ๋ธ๋ก์ ์๋ ๋ชจ๋ ๋ณ์์ ์ ์ ํ ์ ๋ ฌ์ ๋ค์๊ณผ ๊ฐ์ด ์ํํฉ๋๋ค.
ํ์์ ๋ฐ๋ผ ํจ๋ฉํฉ๋๋ค. ํน์ ํ๋ซํผ์์๋ ํ์์ด๋ฉฐ ๋ค๋ฅธ ํ๋ซํผ์์๋ ์ฆ๊ฐํฉ๋๋ค.
์ฑ๋ฅ. "COMMON" ๋ธ๋ก์ด ์ผ๊ด๋ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ์ ์ธ๋์ง ์์ ๊ฒฝ์ฐ
๋ชจ๋ ๊ณณ์์ ์ด ํจ๋ฉ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ผ๋ฉฐ, -fno-์ ๋ ฌ-๊ณตํต ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค
์๋ ์ ๋ ฌ์ ๋นํ์ฑํํฉ๋๋ค. ๋ชจ๋ ํ์ผ์ ๋์ผํ ํ์์ ์ด ์ต์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
"COMMON" ๋ธ๋ก์ ๊ณต์ ํฉ๋๋ค. "COMMON" ๋ธ๋ก์์ ์ ์ฌ์ ์ธ ์ ๋ ฌ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด
๊ฐ์ฅ ํฐ ๊ฒ๋ถํฐ ์์ ๊ฒ ์์ผ๋ก ๋ฌผ๊ฑด์ ์ฃผ๋ฌธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
-fno ๋ณดํธ ๊ดํธ
๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๊ดํธ๋ ๋ค์๊ณผ ๊ฐ์ ๋ชจ๋ ์ต์ ํ ์์ค์ ์ ์ฉ๋ฉ๋๋ค.
์ปดํ์ผ๋ฌ๋ ์ฌ์ฐ๊ฒฐ์ ์ํํ์ง ์์ต๋๋ค. ์ฌ์ฉ -fno ๋ณดํธ ๊ดํธ ์
์ปดํ์ผ๋ฌ๋ "REAL" ๋ฐ "COMPLEX" ํํ์์ ์ฌ์ ๋ ฌํ์ฌ ๋ ๋น ๋ฅธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ฐธ๊ณ
์ฌ์ฐ๊ด ์ต์ ํ๋ฅผ ์ํด -fno ๋ถํธ ์๋ XNUMX and -fno ํธ๋ํ ์ํ ํ์
์ ํจํ๋ค. ๊ดํธ ๋ณดํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. -์คํ์คํธ is
์ฃผ์ด์ง.
-frealloc-lhs
๊ณ ์ ํ ๋น์ ํ ๋น ๊ฐ๋ฅํ ์ผ์ชฝ์ ์๋์ผ๋ก
ํ ๋น๋์ง ์์๊ฑฐ๋ ๋ชจ์์ด ๋ค๋ฅธ ๊ฒฝ์ฐ (์ฌ)ํ ๋น๋ฉ๋๋ค. ์ต์ ์
๋ค์ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -ํ์ค=f95 ์ฃผ์ด์ง๋ค. ๋ํ๋ณด์ญ์์ค -Wrealloc-lhs.
-๊ณต๊ฒฉ์ ๊ธฐ๋ฅ ์ ๊ฑฐ
๋์ผํ ์ธ์ ๋ชฉ๋ก์ ๊ฐ์ง ํจ์๋ ๊ด๊ณ ์์ด ๋ช ๋ น๋ฌธ ๋ด์์ ์ ๊ฑฐ๋ฉ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ด "PURE"๋ก ํ์๋์๋์ง ์ฌ๋ถ. ์๋ฅผ ๋ค์ด,
a = f(b,c) + f(b,c)
"f"์ ๋ํ ํธ์ถ์ ํ ๋ฒ๋ง ์์ ๊ฒ์ ๋๋ค. ์ด ์ต์ ์ ๋ค์ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค.
-ffrontend ์ต์ ํ ์ ํจํฉ๋๋ค.
-ffrontend ์ต์ ํ
์ด ์ต์ ์ Fortran์ ๋ถํ ์กฐ์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฐํธ ์๋ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
ํ์ค ํธ๋ฆฌ. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋จ -O ์ต์ . ์ด์ ์ํด ํ์ฑํ๋ ์ต์ ํ
์ต์ ์๋ ํํ์ ๋ด์์ ๋์ผํ ํจ์ ํธ์ถ ์ ๊ฑฐ, ์ ๊ฑฐ ํฌํจ
๋น๊ต ๋ฐ ํ ๋น์์ "TRIM"์ ๋ํ ๋ถํ์ํ ํธ์ถ ๋ฐ TRIM(a)๋ฅผ ๋ค์์ผ๋ก ๋์ฒด
"a(1:LEN_TRIM(a))". ์ง์ ํ์ฌ ์ ํ ํด์ ํ ์ ์์ต๋๋ค. -fno-frontend-์ต์ ํ.
ํ๊ฒฝ
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ์งํฌํธ๋ ์ปดํ์ผ๋ฌ๋ ํ์ฌ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ดํ์ง ์์ต๋๋ค.
์๋์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ ์ด์์ผ๋ก ์๋ GCC.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์ผ๋ก aarch64-linux-gnu-gfortran-4.8 ์ฌ์ฉ