Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ arm-linux-gnueabihf-gcj ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
gcj - ์๋ฐ ์ธ์ด๋ฅผ ์ํ Ahead-of-Time ์ปดํ์ผ๋ฌ
๊ฐ์
GCJ [-IDIR...] [-d DIR...]
[--ํด๋์คํจ์ค=ํต๋ก] [--ํด๋์ค ๊ฒฝ๋ก=ํต๋ก]
[-f์ ํ๊ถ...] [--๋ถํธํ=name]
[--๊ธฐ๋ณธ=ํด๋์ค ์ด๋ฆ] [-Dname[=๊ฐ์น]...]
[-C] [--์์ ๋ฆฌ์์ค ์ด๋ฆ] [-d ์๋ฐฐ ๊ท์น์]
[-W๊ฒฝ๊ณ ...]
์์ค ํ์ผ...
๊ธฐ์
As gcj ์ ๋ ๋ค๋ฅธ ํ๋ก ํธ ์๋์ผ ๋ฟ์ ๋๋ค. GCC, gcc์ ๋์ผํ ์ต์ ์ ๋ง์ด ์ง์ํฉ๋๋ค.
์ด ์ค๋ช ์๋ ํน์ ์ต์ ๋ง ๋ฌธ์ํํฉ๋๋ค. gcj.
์ต์
์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ํ์ผ
A gcj ๋ช ๋ น์ ๊ฐ๋ค GCC ์ฌ๋ฌ ์ต์ ๊ณผ ํ์ผ๋ก ๊ตฌ์ฑ๋๋ค๋ ์ ์์ ๋ช ๋ น
์ด๋ฆ. ๋ค์ ์ข ๋ฅ์ ์ ๋ ฅ ํ์ผ ์ด๋ฆ์ด ์ง์๋ฉ๋๋ค.
ํ์ผ.์๋ฐ
์๋ฐ ์์ค ํ์ผ.
ํ์ผ.์์
์๋ฐ ๋ฐ์ดํธ์ฝ๋ ํ์ผ.
ํ์ผ.์งํผ
ํ์ผ.JAR
ํ๋ ์ด์์ ".class" ํ์ผ์ ํฌํจํ๋ ์์นด์ด๋ธ๋ก, ๋ชจ๋ ์ปดํ์ผ๋ฉ๋๋ค. NS
์์นด์ด๋ธ๊ฐ ์์ถ๋ ์ ์์ต๋๋ค. ๋ค์์ผ๋ก ๋๋์ง ์๋ ์์นด์ด๋ธ์ ํ์ผ .์์ are
๋ฆฌ์์ค ํ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๊ทธ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒฐ๊ณผ ๊ฐ์ฒด ํ์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. ํต์ฌ:
URL.
@ํ์ผ
๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ์ ๋ ฅ ํ์ผ ์ด๋ฆ ๋ชฉ๋ก์ด ํฌํจ๋ ํ์ผ์ ๋๋ค. (ํ์ฌ ์ด๋ค
๋ชจ๋ ".java" ์์ค ํ์ผ์ด์ด์ผ ํ์ง๋ง ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.) ๊ฐ ๋ช ๋ช ๋ ํ์ผ์ ์ปดํ์ผ๋๊ณ ,
๋ง์น ๋ช ๋ น์ค์ ์์๋ ๊ฒ์ฒ๋ผ.
๋์๊ด.a
๋์๊ด.๊ทธ๋์
-l๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ
๋งํฌํ ๋ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ฐธ์กฐ GCC ์๋.
ํ๋ ์ด์์ ์ ๋ ฅ ํ์ผ์ ์ง์ ํ ์ ์์ต๋๋ค. gcj ๋ช ๋ น์ค, ์ด ๊ฒฝ์ฐ
๋ชจ๋ ์ปดํ์ผ๋ฉ๋๋ค. "-o"๋ฅผ ์ง์ ํ๋ฉด ํ์ผ ์ด๋ฆ" ์ต์ ์ ์ ํํ๋ฉด ๋ชจ๋ ์ ๋ ฅ ํ์ผ์ด
ํจ๊ป ์ปดํ์ผ๋์ด ์ด๋ฆ์ด ์ง์ ๋ ๋จ์ผ ์ถ๋ ฅ ํ์ผ์ ์์ฑํฉ๋๋ค. ํ์ผ ์ด๋ฆ. ์ด๊ฒ์ ์ฌ์ง์ด ํ์ฉ๋ฉ๋๋ค.
"-S" ๋๋ "-c"๋ฅผ ์ฌ์ฉํ ๋๋ ํ์ง๋ง "-C" ๋๋ "--resource"๋ฅผ ์ฌ์ฉํ ๋๋ ๊ทธ๋ ์ง ์์ต๋๋ค. (์ด๊ฒ์ ํ์ฅ
๋ฌด์จ ํ์ ๋๋จธ๋ก GCC ํ์ฉํฉ๋๋ค.) (๋ ๊ฐ ์ด์์ ์ ๋ ฅ ํ์ผ์ด ์ง์ ๋๋ฉด ๋ชจ๋
ํ์ฌ ".java" ํ์ผ์ด์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค.)
์ ๋ ฅ ์ต์
gcj ํ์ํ ํ์ผ์ ์ฐพ๊ธฐ ์ํด ์ฐพ๋ ์์น๋ฅผ ์ ์ดํ๋ โโ์ต์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, gcj ์๋
์ปดํ์ผํ๋๋ก ์์ฒญ๋ฐ์ ํ์ผ์์ ์ฐธ์กฐํ๋ ํด๋์ค๋ฅผ ๋ก๋ํด์ผ ํฉ๋๋ค. ์ข๋ค
Java ์ธ์ด์ฉ ๋ค๋ฅธ ์ปดํ์ผ๋ฌ, gcj ์ ๊ฐ๋ ์ ๊ฐ์ง๊ณ ์๋ค. ์์ ํต๋ก. ์๋ค
ํด๋์ค ๊ฒฝ๋ก๋ฅผ ์กฐ์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ฌ๋ฌ ์ต์ ๋ฐ ํ๊ฒฝ ๋ณ์.
์ธ์ ๋ค ๊ณต์ ํ๋งค์ ์ธ gcj ์ฃผ์ด์ง ํด๋์ค๋ฅผ ์ฐพ๊ณ , ์ผ์นํ๋ ํด๋์ค ๊ฒฝ๋ก๋ฅผ ๊ฒ์ํฉ๋๋ค. .์์
or .์๋ฐ ํ์ผ. gcj ์ค์น๋ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ด์ฅ ํด๋์ค ๊ฒฝ๋ก์ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
libgcj.jar, ๋ชจ๋ ํ์ค ํด๋์ค๋ฅผ ํฌํจํ๋ ํ์ผ.
์๋ ํ ์คํธ์์ ๋๋ ํ ๋ฆฌ ๋๋ ๊ฒฝ๋ก ๊ตฌ์ฑ์์๋ ์ค์ ๋๋ ํ ๋ฆฌ ์ค ํ๋๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
ํ์ผ ์์คํ ๋๋ .์งํผ or .JAR ํ์ผ, gcj ์ธ ๊ฒ์ฒ๋ผ ๊ฒ์ํ ๊ฒ์ ๋๋ค.
๋๋ ํ ๋ฆฌ.
-IDIR
"-I"๋ก ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ ์์๋๋ก ์ ์ง๋๋ฉฐ ํด๋์ค ๊ฒฝ๋ก ์์ ์ถ๊ฐ๋ฉ๋๋ค.
๋ค๋ฅธ ๋ชจ๋ ์ต์ ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. "javac"์ ๊ฐ์ ๋๊ตฌ์ ํธํ๋์ง ์๋ ํ
์ค์ํ๋ฏ๋ก ํญ์ ๋ค๋ฅธ ์ต์ ๋์ "-I"๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํด๋์ค ๊ฒฝ๋ก ์กฐ์
--ํด๋์ค ๊ฒฝ๋ก=ํต๋ก
์ด๊ฒ์ ํด๋์ค ๊ฒฝ๋ก๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ํต๋ก, ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(Windows ๊ธฐ๋ฐ
์์คํ , ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๊ฒฝ๋ก ๋ชฉ๋ก). ์ด๊ฒ์ ๋ด์ฅ์ ์ฌ์ ์ํ์ง ์์ต๋๋ค
("๋ถํ ") ๊ฒ์ ๊ฒฝ๋ก.
--ํด๋์ค ๊ฒฝ๋ก=ํต๋ก
"--classpath"์ ๋ํ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋์์ด์ ๋๋ค.
--๋ถํธํด๋์ค๊ฒฝ๋ก=ํต๋ก
"java.lang.String"๊ณผ ๊ฐ์ ํ์ค ๋ด์ฅ ํด๋์ค๋ฅผ ์ฐพ์ ์ ์๋ ์์น์ ๋๋ค.
--extdirs=ํต๋ก
๊ฐ ๋๋ ํ ๋ฆฌ์ ๋ํด ํต๋ก, ํด๋น ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ๋งจ ๋์ ๋์ต๋๋ค.
ํด๋์ค ๊ฒฝ๋ก.
ํด๋์ค ํจ์ค
์ด๊ฒ์ ๊ฒฝ๋ก ๋ชฉ๋ก์ ๋ณด์ ํ๋ ํ๊ฒฝ ๋ณ์์ ๋๋ค.
์ต์ข ํด๋์ค ๊ฒฝ๋ก๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค.
* ๋จผ์ "-I"๋ฅผ ํตํด ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์ต๋๋ค.
* ๋ง์ฝ์ --ํด๋์ค ๊ฒฝ๋ก ์ง์ ๋๋ฉด ํด๋น ๊ฐ์ด ์ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด "CLASSPATH"
ํ๊ฒฝ ๋ณ์๊ฐ ์ง์ ๋๋ฉด ํด๋น ๊ฐ์ด ์ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ฌ
๋๋ ํ ๋ฆฌ(".")๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
* "--bootclasspath"๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ด์ฅ
์์คํ ๋๋ ํ ๋ฆฌ, libgcj.jar.
* ๋ง์ง๋ง์ผ๋ก "--extdirs"๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ ์ง์ ๋ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค.
ํด๋์ค ๊ฒฝ๋ก ๋์ ์๋ ๋๋ ํ ๋ฆฌ. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ด์ฉ์ ์ถ๊ฐํ์ญ์์ค.
"$(prefix)/share/java/ext"์ ๋ด์ฅ๋ extdir.
์ ์ํด ๋น๋๋ ํด๋์ค ํ์ผ gcj "java.lang.Object" ํด๋์ค์ ๊ฒฝ์ฐ(๋ฐ "libgcj.jar"์ ๋ฐฐ์น๋จ)
๊ธธ์ด๊ฐ XNUMX์ธ ํน์ ์์ฑ "gnu.gcj.gcj-compiled"๋ฅผ ํฌํจํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋ ๋ค์์ ์ฐพ์ต๋๋ค.
์ด ์์ฑ์ "java.lang.Object"๋ฅผ ๋ก๋ํ ๋ ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ๋์ง ์๋ ํ("-fforce-classes-archive-check" ์ต์ ์ ์ฌ์ฉํ์ฌ
์ด ํน๋ณํ ๊ฒฝ์ฐ์ ์ด ๋์์ ์ฌ์ ์ํ์ญ์์ค.)
-fforce-ํด๋์ค-์์นด์ด๋ธ-์ฒดํฌ
์ด๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ํญ์ ๊ธธ์ด๊ฐ XNUMX์ธ ํน์ ์์ฑ์ ํ์ธํ๋๋ก ํฉ๋๋ค.
"java.lang.Object"์ "gnu.gcj.gcj-compiled"๋ฅผ ์ถ๊ฐํ๊ณ ์ฐพ์ง ๋ชปํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
-์์ค=๋ฒ์
์ด ์ต์ ์ ์น์ธ๋ ์์ค ๋ฒ์ ์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. gcj. ๊ธฐ๋ณธ๊ฐ์ 1.5.
์ธ์ฝ๋ฉ
Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ ์ฒด์ ์ผ๋ก ์ ๋์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ํตํฉํ๊ธฐ ์ํ ๋ ธ๋ ฅ์ผ๋ก
๋ค๋ฅธ ๋ก์ผ์ผ๊ณผ ํจ๊ป gcj ์ .์๋ฐ ๊ฑฐ์ ๋ชจ๋ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. gcj
์ปดํ์ผ ํ์์ ์ด๋ฌํ ์ธ์ฝ๋ฉ์ ๋ด๋ถ ์ธ์ฝ๋ฉ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค.
"--encoding=์ด๋ฆ" ์ธ์ฝ๋ฉ์ ์ง์ ํ๋ ์ต์ (ํน์ ๋ฌธ์
set) ์์ค ํ์ผ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ธ์ฝ๋ฉ์
ํ์ฌ ๋ก์ผ์ผ. ํธ์คํธ ์์คํ ์ ๋ก์ผ์ผ ์ง์์ด ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ gcj
๊ธฐ๋ณธ ์ธ์ฝ๋ฉ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ํฉ๋๋ค. UTF-8 ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ.
"--์ธ์ฝ๋ฉ"์ ๊ตฌํํ๋ ค๋ฉด gcj ๋จ์ํ ํธ์คํธ ํ๋ซํผ์ "iconv" ๋ณํ ๋ฃจํด์ ์ฌ์ฉํฉ๋๋ค.
์ฆ, ์ค์ ๋ก gcj ํธ์คํธ ํ๋ซํผ์ ๊ธฐ๋ฅ์ ์ํด ์ ํ๋ฉ๋๋ค.
์ธ์ "--encoding"์ ํ์ฉ๋๋ ์ด๋ฆ์ ํ๋ซํผ๋ง๋ค ๋ค๋ฆ ๋๋ค(
์ด๋์๋ ํ์คํ๋์ด ์์ง ์์). ํ์ง๋ง, gcj ๋ช ๋ช ๋ ์ธ์ฝ๋ฉ์ ๊ตฌํํฉ๋๋ค. UTF-8
๋ด๋ถ์ ์ผ๋ก, ๋ฐ๋ผ์ ์์ค ํ์ผ์ ์ด๊ฒ์ ์ฌ์ฉํ๊ธฐ๋ก ์ ํํ๋ฉด
๋ชจ๋ ํธ์คํธ์์ ์๋ํฉ๋๋ค.
๊ฒฝ๊ณ
gcj ์ฌ๋ฌ ๊ฒฝ๊ณ ๋ฅผ ๊ตฌํํฉ๋๋ค. ๋ค๋ฅธ ์ ๋ค๋ฆญ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก GCC ๊ฒฝ๊ณ , ์ต์ ์ ๊ฒฝ์ฐ
"-Wfoo" ํ์์ ๊ฒฝ๊ณ ๋ฅผ ํ์ฑํํ๊ณ "-Wno-foo"๋ ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ฐ๋ฆฌ๊ฐ ์ ํํ
์ํฅ์ ๋ฏธ์น ๊ฒฝ๊ณ ํ์์ ๋ฌธ์ํํ์ญ์์ค. ๊ธฐ๋ณธ๊ฐ์
๋์ด๋ ๊ฒ๊ณผ ๋ฐ๋์ ๋๋ค.
-์ค๋ณต ์์์ด
์ด ๊น๋ฐ๋ก, gcj ์ค๋ณต ์์ ์์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฒฝ๊ณ ํฉ๋๋ค
์ธํฐํ์ด์ค ๋ฉ์๋๊ฐ "๊ณต๊ฐ"๋ก ์ ์ธ๋ ๊ฒฝ์ฐ.
-์ธ๋ถ ์ธ๋ฏธ์ฝ๋ก
์ด ์์ธ gcj ๋น ๋ฌธ์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ๋น ์ง์ ์
๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
- ๊ตฌ์ ์์
์ด ์ต์ ์ gcj ์์ค ํ์ผ์ด ์ผ์นํ๋ ํ์ผ๋ณด๋ค ์ต์ ์ผ ๋ ๊ฒฝ๊ณ ํ์ง ์์
ํด๋์ค ํ์ผ. ๊ธฐ๋ณธ์ ์ผ๋ก gcj ์ด์ ๋ํด ๊ฒฝ๊ณ ํ ๊ฒ์ ๋๋ค.
- ๋ ์ด์ ์ฌ์ฉ๋์ง ์์
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ํด๋์ค, ๋ฉ์๋ ๋๋ ํ๋๊ฐ ์ฐธ์กฐ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
- ์ฌ์ฉํ์ง ์์
์ด๊ฒ์ GCC์ "-Wunused"์ ๋๋ค.
-๋ฒฝ
์ด๊ฒ์ "-Wredundant-modifiers -Wextraneous-์ธ๋ฏธ์ฝ๋ก -Wunused"์ ๋์ผํฉ๋๋ค.
์ฐ๊ฒฐ
Java ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฐ๊พธ๋ ค๋ฉด ํ์ํ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
C ๋๋ C++์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ๋ง์ปค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ ์ญ ํจ์๋ฅผ ์ฐพ์ต๋๋ค.
"๊ธฐ๋ณธ". Java์๋ ์ ์ญ ๊ธฐ๋ฅ์ด ์๊ณ Java ํด๋์ค ๋ชจ์์ด ์์ ์ ์์ผ๋ฏ๋ก
"main" ๋ฉ์๋๊ฐ ์๋ ํด๋์ค๊ฐ ๋ ๊ฐ ์ด์ ์๋ ๊ฒฝ์ฐ ๋ง์ปค์ ๋ค์ ์ค ์ด๋ ๊ฒ์ธ์ง ์๋ ค์ผ ํฉ๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ ์์ํ ๋ ํธ์ถํด์ผ ํ๋ "์ฃผ์" ๋ฉ์๋์ ๋๋ค. ๋น์ ์ ๊ทธ๊ฒ์ ํ ์ ์์ต๋๋ค
๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋:
* ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ ๋ ์ํ๋ "main" ๋ฉ์๋๊ฐ ํฌํจ๋ ํด๋์ค๋ฅผ ์ง์ ํ๊ณ ,
์๋์ ์ค๋ช ๋ "--main" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
* Java ํจํค์ง๋ฅผ ์คํ ํ์ผ์ด ์๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(dll)์ ์ฐ๊ฒฐํฉ๋๋ค. ๊ทธ ๋ค์์
"gij" ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ํธ์ถํ์ฌ "gij"๊ฐ
ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
* "main" ๋ฃจํด์์ ๋งํฌ๋๋ "-lgij" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ Java ํจํค์ง๋ฅผ ๋งํฌํฉ๋๋ค.
"gij" ๋ช ๋ น์์. ์ด๋ ๊ฒ ํ๋ฉด "main" ๋ฉ์๋๊ฐ ์๋ ํด๋์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ์คํํ๋ ค๊ณ ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ "gij" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
"-D" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ์ ์ค์ ํฉ๋๋ค. "gij"๊ฐ ์๋ "-lgij" ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
์ด์ ๋ฉ์ปค๋์ฆ์ ํ๋ก๊ทธ๋จ)์๋ ๋ช ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค. ์ ์
์ฐ๊ฒฐํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ฑฐ๋ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค.
๋ค์ "gij" ์ต์ ์ ์คํ ํ์ผ ์ฐ๊ฒฐ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
--๋ฉ์ธ=ํด๋์ค ์ด๋ฆ
์ด ์ต์ ์ "main" ๋ฉ์๋๊ฐ ์๋ ํด๋์ค์ ์ด๋ฆ์ ์ง์ ํ๊ธฐ ์ํด ๋งํฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฒฐ๊ณผ ์คํ ํ์ผ์ด ์คํ๋ ๋ ํธ์ถ๋์ด์ผ ํฉ๋๋ค.
-Dname[=๊ฐ์น]
์ด ์ต์ ์ "--main"๊ณผ ํจ๊ป๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ช ๋ช ๋ ์์คํ ์์ฑ์ ์ ์ํฉ๋๋ค. name
๊ฐ์น์๋ ๊ฐ์น. ๋ฉด ๊ฐ์น ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๋น ๋ฌธ์์ด์ ๋๋ค.
์ด๋ฌํ ์์คํ ์์ฑ์ ํ๋ก๊ทธ๋จ ์์ ์ ์ด๊ธฐํ๋๋ฉฐ ๊ฒ์ํ ์ ์์ต๋๋ค.
"java.lang.System.getProperty" ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์์.
-lgij
๋ช ๋ น์ค ์ฒ๋ฆฌ๊ฐ "gij" ๋ช ๋ น์ผ๋ก ์ฒ๋ฆฌ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ญ๋๋ค.
์ด ์ต์ ์ "--main"์ ์ฌ์ฉํ๋ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ๋ค ์ฌ์ฉํ ์ ์์ต๋๋ค.
-์ ์ -libgcj
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด libgcj ๋ฐํ์์ ์ ์ ๋ฒ์ ์ ๋ํด ๋งํฌ๊ฐ ์ํ๋ฉ๋๋ค.
๋์๊ด. ์ด ์ต์ ์ ํด๋น ๋ง์ปค ์ง์์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ์: libgcj์ ์ ์ ๋งํฌ๋ก ์ธํด libgcj์ ํ์ ๋ถ๋ถ์ด ์๋ต๋ ์ ์์ต๋๋ค.
libgcj์ ์ผ๋ถ๋ ๋ฐํ์์ ํด๋์ค๋ฅผ ๋ก๋ํ๊ธฐ ์ํด ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํฉ๋๋ค. ๋ง์ปค๊ฐ ํ๊ธฐ ๋๋ฌธ์
๋งํฌ ํ์์ ์ด๋ฌํ ์ฐธ์กฐ๊ฐ ํ์๋์ง ์์ผ๋ฉด ์ฐธ์กฐ๋ ํด๋์ค๋ฅผ ์๋ตํ ์ ์์ต๋๋ค. NS
๊ฒฐ๊ณผ๋ ์ผ๋ฐ์ ์ผ๋ก(ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋) ๋ฐํ์์ "ClassNotFoundException"์ด ๋ฐ์ํฉ๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ ๋๋ ์ฃผ์ํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค.
<http://gcc.gnu.org/wiki/Statically%20์ฐ๊ฒฐ%20libgcj>
์ํธ ์ธ๋
๋ง์ ๊ฒ ์ธ์๋ GCC ์ฝ๋ ์์ฑ์ ์ ์ดํ๋ โโ์ต์ , gcj ๋ช ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค
๊ทธ ์์ฒด๋ก ํน์ .
-C ์ด ์ต์ ์ gcj ๋ฐ์ดํธ์ฝ๋ ์์ฑ(.์์ ํ์ผ) ๋์ ๊ฐ์ฒด
์ํธ.
--์์ ๋ฆฌ์์ค ์ด๋ฆ
์ด ์ต์ ์ gcj ์ฃผ์ด์ง ํ์ผ์ ๋ด์ฉ์ ๊ฐ์ฒด ์ฝ๋๋ก ์ปดํ์ผ
๋ฐ๋ผ์ ํต์ฌ ํ๋กํ ์ฝ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์์ ๋ค์๊ณผ ๊ฐ์ด ์ก์ธ์คํ ์ ์์ต๋๋ค. ํต์ฌ:/์์-
name. ๊ทธ ์ฃผ ๋ฆฌ์์ค ์ด๋ฆ ๋ฐํ์์ ๋ฐ๊ฒฌ๋ ๋ฆฌ์์ค์ ์ด๋ฆ์ ๋๋ค. ~์์ํ
์๋ฅผ ๋ค์ด "ResourceBundle.getBundle" ํธ์ถ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ค์ ํ์ผ
์ด ๋ฐฉ๋ฒ์ผ๋ก ์ปดํ์ผํ ์ด๋ฆ์ ๋ณ๋๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
-ftarget=๋ฒ์
์ด๊ฒ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. -C ์์ ๋ด๋ณด๋ธ ๋ฐ์ดํธ์ฝ๋์ ๋ฒ์ ์ ์ ํํ๋ ค๋ฉด gcj. ๊ทธ๋งํผ
๊ธฐ๋ณธ๊ฐ์ 1.5. ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ์ง ์์ ๋๋ ์ด ์ต์ ์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
-d ์๋ฐฐ ๊ท์น์
"-C"์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์์ฑ .์์ ์ ๋ฃ์ ํ์ผ
์ ์ ํ ํ์ ๋๋ ํ ๋ฆฌ ์๋ฐฐ ๊ท์น์. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค.
ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ์
-fno-๊ฒฝ๊ณ ๊ฒ์ฌ
๊ธฐ๋ณธ์ ์ผ๋ก, gcj ๋ชจ๋ ๋ฐฐ์ด ์ธ๋ฑ์ฑ์ ๊ฒฝ๊ณ๋ฅผ ํ์ธํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์์ . ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๊ฒ์ฌ๊ฐ ์๋ต๋์ด ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ต๋๋ค.
๋ฐฐ์ด์ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ๋ ์ฝ๋์ ๊ฒฝ์ฐ. ์์ธกํ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
๋ฌธ์ ์ ์ฝ๋๊ฐ ์ค์ ๋ก ๋ฐฐ์ด ๊ฒฝ๊ณ ์ ์ฝ ์กฐ๊ฑด์ ์๋ฐํ๋ ๊ฒฝ์ฐ ๋์. ๊ทธ๊ฒ
์ฝ๋๊ฐ ์ ๋ ๋์ง์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํ๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
"ArrayIndexOutOfBoundsException".
-fno-์คํ ์ด-์ฒดํฌ
์ด๋ ์ด ์ ์ฅ์ ๊ฒ์ฌ๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค. ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ ๋ ๋ฐํ์ ๊ฒ์ฌ
๊ฐ์ฒด๊ฐ ๋ค์๊ณผ ํ ๋น ํธํ๋๋์ง ํ์ธํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
๋ฐฐ์ด์ ๊ตฌ์ฑ ์์ ์ ํ(์ปดํ์ผ ์์๋ ์ ์ ์์). ์ด๊ฒ์ผ๋ก
์ต์ ์์๋ ์ด๋ฌํ ๊ฒ์ฌ๊ฐ ์๋ต๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ์ฅํ๋ ์ฝ๋์ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ต๋๋ค.
๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด์ ์์ฃผ ๋ฃ์ต๋๋ค. ์์ ์ด ํ์คํ๋ค๋ฉด ์ด ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
์ฝ๋๋ "ArrayStoreException"์ ๋์ง์ง ์์ต๋๋ค.
-fjni
์ gcj ๋ค์ดํฐ๋ธ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ๋ฐ๋ CNI์ JNI์ ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก
gcj CNI๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ค์ดํฐ๋ธ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค๋ฅผ ์ปดํ์ผํ๋ ๊ฒฝ์ฐ
์ด๋ฌํ ๋ฐฉ๋ฒ์ JNI๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ ๋ค์ "-fjni"๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ์ต์
์์ธ gcj ๊ธฐ๋ณธ JNI ๋ฉ์๋๋ฅผ ํธ์ถํ ์คํ ์ ์์ฑํฉ๋๋ค.
-fno-assert
"assert" ํค์๋๋ฅผ ์ธ์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ํ ๊ฒ์ ๋๋ค.
์ธ์ด ์ฌ์์.
-fno-์ต์ ํ-์ ์ -ํด๋์ค-์ด๊ธฐํ
์ต์ ํ ์์ค์ด "-O2"๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๋, gcj ์ต์ ํ๋ฅผ ์๋ํ ๊ฒ์ ๋๋ค
๋ฐํ์์ ๋ํ ํธ์ถ์ด ์ฒ์ ์ฌ์ฉํ ๋ ์ ์ ํด๋์ค๋ฅผ ์ด๊ธฐํํ๋ ๋ฐฉ์
(์ด ์ต์ ํ๋ "-C"๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ ์ํ๋์ง ์์ต๋๋ค.) ๋ค์ดํฐ๋ธ๋ก ์ปดํ์ผํ ๋
์ฝ๋ "-fno-optimize-static-class-initialization"์ ์ด ์ต์ ํ๋ฅผ ๋๋๋ค.
์ฌ์ฉ ์ค์ธ ์ต์ ํ ์์ค์ ๊ด๊ณ์์ด
--๋นํ์ฑํ ์ฃผ์ฅ[=ํด๋์ค ๋๋ ํจํค์ง]
์ปดํ์ผ๋ ์ฝ๋์ ์ด์ค์ ์ ํ์ธํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ํฌํจํ์ง ๋ง์ญ์์ค. ๋ง์ฝ์
"=ํด๋์ค ๋๋ ํจํค์ง" ๋๋ฝ์ ๋ชจ๋ ํด๋์ค์ ๋ํ ์ด์ค์ ์ฝ๋ ์์ฑ์ ๋นํ์ฑํํฉ๋๋ค.
๋ ๊ตฌ์ฒด์ ์ธ "--enable-assertions" ํ๋๊ทธ๋ก ์ฌ์ ์๋์ง ์๋ ํ. ๋ง์ฝ์ ํด๋์ค ๋๋ ํจํค์ง
๋ ํด๋์ค ์ด๋ฆ์ด๋ฉฐ, ๋ช ๋ช ๋ ํด๋์ค ๋ด์์ ์ด์ค์ ๊ฒ์ฌ ์์ฑ์ ๋นํ์ฑํํ๊ฑฐ๋
๋ด๋ถ ํด๋์ค. ๋ง์ฝ์ ํด๋์ค ๋๋ ํจํค์ง ๋ ํจํค์ง ์ด๋ฆ์ด๋ฉฐ ์์ฑ์ ๋นํ์ฑํํฉ๋๋ค.
์ด์ค์ ์ ๋ช ๋ช ๋ ํจํค์ง ๋๋ ํ์ ํจํค์ง ๋ด์์ ํ์ธํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ด์ค์ ์ ํด๋์ค ํ์ผ์ ์์ฑํ๊ฑฐ๋ ์ต์ ํํ์ง ์์ ๋ ํ์ฑํ๋ฉ๋๋ค.
์ต์ ํ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํ ๋ ๋นํ์ฑํ๋ฉ๋๋ค.
--์ด์ค์ ํ์ฑํ[=ํด๋์ค ๋๋ ํจํค์ง]
์ฃผ์ฅ์ ํ์ธํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ฌ์ ํ ํ์ํ๋ฏ๋ก ์ต์ ์ ์ด๋ฆ์ด ์๋ชป๋์์ ์ ์์ต๋๋ค.
๋ฐํ์์ ์ด์ค์ ๊ฒ์ฌ๋ฅผ ์ผ๊ณ ์ฐ๋ฆฌ๋ ์ฝ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ง์ํ์ง ์์ต๋๋ค.
์ ๊ฒ. ๋ฐ๋ผ์ ์ด ํ๋๊ทธ๋ ๋ถ๋ถ์ ์ผ๋ก ์ฌ์ ์ํ๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ์์ง ๊ทธ๋ค์ง ์ ์ฉํ์ง ์์ต๋๋ค.
"--disable-assertions".
-findirect-๋์คํจ์น
gcj ํน๋ณํ ๋ฐ์ด๋๋ฆฌ ํธํ์ฑ ABI๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
"-findirect-dispatch" ์ต์ . ์ด ๋ชจ๋์์ ์์ฑ๋ ์ฝ๋๋ gcj ๋ช ์
Java ์ธ์ด ์ฌ์์ ๋ฐ์ด๋๋ฆฌ ํธํ์ฑ ๋ณด์ฅ ๋ฐ ๊ทธ ๊ฒฐ๊ณผ
๊ฐ์ฒด ํ์ผ์ ์ข ์์ฑ์ ๋ํด ์ง์ ์ฐ๊ฒฐํ ํ์๊ฐ ์์ต๋๋ค. ๋์ ์,
๋ชจ๋ ์ข ์์ฑ์ ๋ฐํ์์ ์กฐํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ํด์ ๋ฐ
์ปดํ์ผ๋ ์ฝ๋.
ํ์ฌ "-findirect-dispatch"๋ ์ปดํ์ผํ ๋๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. .์์
ํ์ผ. ์์ค์์ ์ปดํ์ผํ ๋๋ ์๋ํ์ง ์์ต๋๋ค. CNI๋ ์์ง ์๋ํ์ง ์์ต๋๋ค.
๋ฐ์ด๋๋ฆฌ ํธํ์ฑ ABI. ์ด๋ฌํ ์ ํ์ ํฅํ์ ํด์ ๋ ์์ ์ ๋๋ค.
๋์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์ค ABI๋ก CNI ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ฉด ์ฝ๋์์ ํธ์ถํ ์ ์์ต๋๋ค.
๋ฐ์ด๋๋ฆฌ ํธํ์ฑ ABI๋ก ๊ตฌ์ถ๋์์ต๋๋ค.
-fbootstrap-ํด๋์ค
์ด ์ต์ ์ "libgcj"์๊ฒ ์ปดํ์ผ๋ ํด๋์ค๊ฐ ๋ก๋๋์ด์ผ ํจ์ ์๋ฆฌ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์คํ ํด๋์ค ๋ก๋๊ฐ ์๋๋ผ ๋ถํธ์คํธ๋ฉ ๋ก๋์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋์ค๋ฅผ ์ปดํ์ผํ๋ฉด
์คํ ํ์ผ์ ๋งํฌํ๋ฉด ๋ง์น ๋ค์์ ์ฌ์ฉํ์ฌ ๋ก๋๋ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์์คํ ํด๋์ค ๋ก๋. ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์๋ฏธํ๋ฏ๋ก ํธ๋ฆฌํฉ๋๋ค.
"Class.forName()"์ด ๊ฒ์ํฉ๋๋ค. ํด๋์ค ํจ์ค ์ํ๋ ํด๋์ค๋ฅผ ์ฐพ๊ธฐ ์ํด
- ๊ฐ์๋ ๋ฐ์ฌ
์ด ์ต์ ์ผ๋ก ์ธํด ์์ฑ๋ ์ฝ๋๋ gcj ํด๋์ค์ ๊ฐ์๋ ์์ ํฌํจํ๊ธฐ ์ํด
๋ฐํ์ ๋ฆฌํ๋ ์ ์ ์ง์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฉํ ๋ฐ์ดํฐ์ ๋๋ค. ์ด ์ ์ฝ์ ๋น์ฉ์ ์์ค์ ๋๋ค.
ํ์ค Java ๋ฐํ์์ ํน์ ๋ฆฌํ๋ ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ
ํ๊ฒฝ. ์ ํํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ํ์ํ ๊ฒ์ ์ ์ธํ ๋ชจ๋ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ ๋
๋ฐํ์ ์๋ฏธ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค.
๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ง ์๋ ์ฝ๋(์: ์ง๋ ฌํ, RMI, CORBA ๋๋ ํธ์ถ ๋ฉ์๋)
"java.lang.reflect" ํจํค์ง์์) "-freduced-reflection"์ ์ ์ ํ
์คํ ๊ฐ๋ฅํ ์ฝ๋ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ์์ .
JNI("-fjni") ๋ฐ ๋ฐ์ด๋๋ฆฌ ํธํ์ฑ ABI("-findirect-dispatch")๊ฐ ์๋ํ์ง ์์
์ ์ฒด ๋ฐ์ฌ ๋ฉํ ๋ฐ์ดํฐ ์์ด ์ฌ๋ฐ๋ฅด๊ฒ. ์ด ๋๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ค๋ฅ์ ๋๋ค.
์ด๋ฌํ ์ต์ ์ "-freduced-reflection"๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์: ๋ฆฌํ๋ ์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด "SecurityManager"๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๊ฐ
์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค. ๋ํ ํธ์ถํ๋ ๋ฉ์๋์ "Class.forName()" ํธ์ถ์ด ์คํจํ ์ ์์ต๋๋ค
๋ฐ์ฌ ๋ฉํ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.
๊ตฌ์ฑ ์๊ฐ ์ต์
์ผ๋ถ gcj ์ฝ๋ ์์ฑ ์ต์ ์ ๊ฒฐ๊ณผ ABI์ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก
๋ฐํ์ ํจํค์ง์ธ "libgcj"๊ฐ ์ค์ ๋ ๋ ์๋ฏธ์๊ฒ ์ฃผ์ด์ง๋ค. "libgcj"๋
์ด ๊ทธ๋ฃน์์ ์ ์ ํ ์ต์ ์ ํฌ๊ธฐ ์์ ์ฝ๋ ํ์ผ gcj. ์ด๋ฌํ ์ต์
์์ ์ฑ์ ์ํด ์ฌ๊ธฐ์ ๋์ด๋์ด ์์ต๋๋ค. "libgcj"๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ง์ง๊ณ ์ถ์ง ์์ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์ต์ .
-ํจ์ฆ-boehm-gc
์ด๋ฅผ ํตํด Boehm GC ๋นํธ๋งต ๋งํน ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํนํ ์ด๋ก ์ธํด
gcj ๊ฐ์ฒด ํ์ ์ค๋ช ์๋ฅผ ๊ฐ vtable์ ๋ฃ์ต๋๋ค.
-fhash ๋๊ธฐํ
๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ธฐํ ๋ฐ์ดํฐ("๋๊ธฐํ", "๋๊ธฐ" ๋ฐ
"notify")๋ ๊ฐ ๊ฐ์ฒด์ ๋จ์ด๋ก ๊ฐ๋ฆฌํต๋๋ค. ์ด ์ต์ ์ผ๋ก gcj ๊ทธ๊ฒ์ ๊ฐ์
์ด ์ ๋ณด๋ ๊ฐ์ฒด ์์ฒด๊ฐ ์๋๋ผ ํด์ ํ ์ด๋ธ์ ์ ์ฅ๋ฉ๋๋ค.
-fuse-divide-์๋ธ๋ฃจํด
์ผ๋ถ ์์คํ ์์๋ ์ ์ ๋๋๊ธฐ๋ฅผ ์ํํ๊ธฐ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฃจํด์ด ํธ์ถ๋ฉ๋๋ค. ์ด๊ฒ์
XNUMX์ผ๋ก ๋๋ ๋ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋ ๋ฐ ํ์ํฉ๋๋ค.
-fcheck-์ฐธ์กฐ
์ผ๋ถ ์์คํ ์์๋ ๊ฐ์ฒด์ ์ก์ธ์คํ ๋๋ง๋ค ์ธ๋ผ์ธ ๊ฒ์ฌ๋ฅผ ์ฝ์ ํด์ผ ํฉ๋๋ค.
์ฐธ์กฐ๋ฅผ ํตํด. ๋ค๋ฅธ ์์คํ ์์๋ ๋ ํฌ์ธํฐ๊ฐ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ํ์ํ์ง ์์ต๋๋ค.
ํ๋ก์ธ์์ ์ํด ์๋์ผ๋ก ์กํ๋๋ค.
-ํจ์ฆ ์์ ๋ด์ฅ
์ผ๋ถ ์์คํ ์์ GCC๋ ๊ธฐ๋ณธ ์ ๊ณต ์์ ์ฐ์ฐ์ ์ํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ฌ์ฉ
Java ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋ gcj๊ฐ ์ด๋ฌํ ๋ด์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ํ๋ ์ต์ ์ ๋๋ค. ์ด ์ด๋
๊ธฐ๋ฅ์ด ์์ผ๋ฉด ์๋์ผ๋ก ๊ฐ์ง๋์ด์ผ ํ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ํ์ํ์ง ์์ต๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํฉ๋๋ค.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์ผ๋ก arm-linux-gnueabihf-gcj๋ฅผ ์ฌ์ฉํ์ธ์.