Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ ccconfigp ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
ccconfig - ์ปดํ์ผ๋ฌ์ ๋ํ Convert::Binary::C ๊ตฌ์ฑ ๊ฐ์ ธ์ค๊ธฐ
๊ฐ์
ccconfig ์ต์ [-- ์ปดํ์ผ๋ฌ ์ต์ ]
์ต์ :
-c
--cc ์ปดํ์ผ๋ฌ ํ ์คํธ๋ฅผ ์ํ ์ปดํ์ผ๋ฌ ์คํ ํ์ผ
๊ธฐ๋ณธ๊ฐ: ์๋ ๊ฒฐ์
-o
--output-file ํ์ผ ์ถ๋ ฅ ํ์ผ ์ด๋ฆ
๊ธฐ๋ณธ๊ฐ: stdout์ผ๋ก ์ถ๋ ฅ
-f
--output-format ํ์ ์ถ๋ ฅ ํ์
๊ธฐ๋ณธ๊ฐ: ๋คํผ
--basename name ์์ ํ ์คํธ ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ
๊ธฐ๋ณธ๊ฐ: _t_e_s_t
-I
--inc-path ๊ฒฝ๋ก๋ ์ปดํ์ผ๋ฌ ํฌํจ ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ์ค์ ํฉ๋๋ค.
--์ ์ฒ๋ฆฌ ๊ท์น ์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ ์ฒ๋ฆฌ ๊ท์น ์ปดํ์ผ๋ฌ ๊ท์น
--compile-obj ๊ท์น ๊ฐ์ฒด ์ปดํ์ผ์ ์ํ ์ปดํ์ผ๋ฌ ๊ท์น
--compile-exe ๊ท์น ์คํ ํ์ผ ์ปดํ์ผ์ ์ํ ์ปดํ์ผ๋ฌ ๊ท์น
--c-ext C ์์ค ํ์ผ์ ํ์ฅ์
--pp-ext ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ ํ์ผ์ ํ์ฅ์
--obj-ext ๊ฐ์ฒด ํ์ผ์ ํ์ฅ์
--exe-ext ์คํ ํ์ผ์ ํ์ฅ์
--nodelete ์์ ํ์ผ์ ์ญ์ ํ์ง ์์ต๋๋ค
--norun ์คํ ํ์ผ์ ์คํํ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค.
--quiet ์๋ฌด๊ฒ๋ ํ์ํ์ง ์์
--nostatus๋ ์ํ ํ์๊ธฐ๋ฅผ ํ์ํ์ง ์์ต๋๋ค.
--version ์ธ์ ๋ฒ์ ๋ฒํธ
--debug ๋๋ฒ๊ทธ ๋ชจ๋
์ปดํ์ผ๋ฌ ๊ท์น์์ ํ์ฉ๋๋ ์๋ฆฌ ํ์์:
%c C ์์ค ํ์ผ
%o ๊ฐ์ฒด ํ์ผ
%e ์คํ ํ์ผ
%i ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ ํ์ผ
| ๊ฒฐ๊ณผ๋ stdout์ ๊ธฐ๋ก๋ฉ๋๋ค(๊ท์น ๋์์๋ง).
๊ธฐ์
"ccconfig"๋ Convert::Binary::C์ ๋ํด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ์ ๊ฒฐ์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ปดํ์ผ๋ฌ ์คํ ํ์ผ์ ํ ์คํธํฉ๋๋ค. ๋ค์์ ์ํด ์์ฑ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋๋๋ค.
์ปดํ์ผ๋ฌ๋ฅผ ์คํํ ์ ์์ผ๋ฏ๋ก ํฌ๋ก์ค ์ปดํ์ผ๋ฌ์๋ "ccconfig"๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๋๊ตฌ๋ ์์ง ์คํ์ ์ด๋ฏ๋ก, ์์ด ์ถ๋ ฅ์ ์์กดํด์๋ ์ ๋ฉ๋๋ค.
ํ์ธํ์ง ๋ง๊ณ ๊ทํ์ ํ๊ฒฝ์์ ์๋ํ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ์ง๋ ๋ง์ธ์.
์ต์
"--cc" ์ปดํ์ผ๋ฌ
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ ์คํ ํ์ผ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ํนํ
์์คํ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค. ์ด ์ต์ ์ด ์ฃผ์ด์ง์ง ์์ผ๋ฉด,
"ccconfig"๋ ์ปดํ์ผ๋ฌ๋ฅผ ์ถ์ธกํ๋ ค๊ณ ์๋ํฉ๋๋ค.
"--๊ฒฐ๊ณผ๋ฌผ ํ์ผ" ํ์ผ
Convert::Binary::C ๊ตฌ์ฑ์ ์ง์ ๋ ํ์ผ์ ์๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋ค์์ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
"stdout"์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค.
"--์ถ๋ ฅ ํ์" ์ฒด์ฌ
Convert::Binary::C ๊ตฌ์ฑ์ ์ถ๋ ฅ ํ์์ ์ง์ ํฉ๋๋ค. ๋ค์ ํ์
ํ์ฌ ์ง์๋ฉ๋๋ค:
dumper Data::Dumper๋ฅผ ์ฌ์ฉํ์ฌ %config ํด์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
require์ ์ ํฉํ ํ์์ผ๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ "๋คํผ"์ ๋๋ค.
"--๊ธฐ๋ณธ ์ด๋ฆ" name
์์ ํ ์คํธ ํ์ผ์ ๊ธฐ๋ณธ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๋ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
C ์์ค ํ์ผ์ ํ์ผ ์ด๋ฆ์ ๋น๋ํ๋ ๋ค์ํ "-ext" ์ต์ , ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ
ํ์ผ, ๊ฐ์ฒด ํ์ผ ๋ฐ ์คํ ํ์ผ.
"--inc-๊ฒฝ๋ก" ํต๋ก
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ์ ํฌํจ ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
"ccconfig"๋ ํฌํจ ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ์ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ต๋๋ค. ์ด ์ต์ ์ ๋ ๋ฒ ์ด์ ์ง์ ํ ์ ์์ต๋๋ค.
"--์ ์ฒ๋ฆฌ" ์ง๋ฐฐ
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ค์์ ์ง์ ํ ์ ์์ต๋๋ค. ์ง๋ฐฐ "ccconfig"๋ ์ปดํ์ผ๋ฌ๋ฅผ ์คํํ์ฌ
์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ. ๋๋ถ๋ถ์ ์ปดํ์ผ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ์ ํ์ค ์ถ๋ ฅ์ ์๋๋ค.
"-E" ์ต์ ์ด ์ฃผ์ด์ง๋ฉด, ์ฆ
์ฐธ์กฐ ๋ฒํธ -E foo.c
์ ์ฒ๋ฆฌํ ๊ฒ์ ๋๋ค foo.c ํ์ค ์ถ๋ ฅ์ผ๋ก. "ccconfig"์ ํด๋นํ๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ccconfig --preprocess='-E %c |'
<%c>๋ C ์์ค ํ์ผ ์ด๋ฆ์ผ๋ก ๋์ฒด๋๊ณ ํ์ดํ ๊ธฐํธ๋
๊ฒฐ๊ณผ๋ ํ์ค ์ถ๋ ฅ์ ๊ธฐ๋ก๋ฉ๋๋ค.
"ccconfig" ๊ท์น์์๋ ๋ค์ ์๋ฆฌ ํ์์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
%c C ์์ค ํ์ผ
%o ๊ฐ์ฒด ํ์ผ
%e ์คํ ํ์ผ
%i ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ ํ์ผ
์ผ๋ฐ์ ์ผ๋ก "ccconfig"๋ ์ฌ๋ฐ๋ฅธ ๊ท์น์ ์์ฒด์ ์ผ๋ก ํ์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
"--์ปดํ์ผ-obj" ์ง๋ฐฐ
"--preprocess"์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ ์ปดํ์ผํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ท์น์ ์ ์ํ ์ ์์ต๋๋ค.
ํ์ผ. ๋๋ถ๋ถ์ ์ปดํ์ผ๋ฌ์์ ์ด ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ccconfig --compile-obj='-c -o %o %c'
"--์ปดํ์ผ-exe" ์ง๋ฐฐ
"--preprocess"์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ ๋ฐฉ๋ฒ์ ๋ํ ๊ท์น์ ์ ์ํ ์ ์์ต๋๋ค.
์คํ ๊ฐ๋ฅ ํ์ผ. ๋๋ถ๋ถ์ ์ปดํ์ผ๋ฌ์์ ์ด ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ccconfig --compile-exe='-o %e %c'
"--compile-obj" ๋๋ "--compile-exe"๋ฅผ ์ง์ ํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํฉ๋๋ค. ๊ทธ๋์ ๋ง์ฝ
์ปดํ์ผ๋ฌ๋ ๊ฐ์ฒด ํ์ผ๋ง ์์ฑํ ์ ์์ผ๋ฏ๋ก ๊ด์ฐฎ์ต๋๋ค.
"--c-ext"
์ด ์ต์ ์ "--basename"๊ณผ ํจ๊ป ์ฌ์ฉ๋์ด C ์์ค ํ์ผ์ ์ด๋ฆ์ ๊ตฌ์ฑํฉ๋๋ค. ์ด๊ฒ์
์ผ๋ฐ์ ์ผ๋ก ".c"๋ก ์ค์ ๋ฉ๋๋ค.
"--pp-ext"
์ด ์ต์ ์ "--basename"๊ณผ ํจ๊ป ์ฌ์ฉ๋์ด ์ ์ฒ๋ฆฌ๊ธฐ ์ถ๋ ฅ์ ์ด๋ฆ์ ๊ตฌ์ฑํฉ๋๋ค.
ํ์ผ.
"--obj-ext"
์ด ์ต์ ์ "--basename"๊ณผ ํจ๊ป ์ฌ์ฉ๋์ด ๊ฐ์ฒด ํ์ผ์ ์ด๋ฆ์ ๊ตฌ์ฑํฉ๋๋ค.
"--exe-ext"
์ด ์ต์ ์ ์คํ ํ์ผ์ ์ด๋ฆ์ ๊ตฌ์ฑํ๊ธฐ ์ํด "--basename"๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
"--nodelete"
์ปดํ์ผ๋ฌ์์ ์์ฑ๋ ์์ ํ์ผ์ ์ญ์ ํ๋ ค๊ณ ์๋ํ์ง ๋ง์ธ์. ๋ณดํต,
"ccconfig"๋ ์์ ํ ์คํธ ํ์ผ๊ณผ ๋์ผํ ๊ธฐ๋ณธ ์ด๋ฆ์ ๊ฐ์ง ๋ชจ๋ ํ์ผ์ ์ฐพ๊ณ
์ญ์ ํฉ๋๋ค.
"--๋ ธ๋ฃฌ"
์ปดํ์ผ๋ฌ์์ ์์ฑ๋ ์คํ ํ์ผ์ ์คํํ ์ ์๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
์ฆ, ํฌ๋ก์ค ์ปดํ์ผ๋ฌ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ๊ทธ๋ฌ๋ "ccconfig"๋ ์๋์ผ๋ก
์คํ ํ์ผ์ ์คํํ ์ ์๋ค๋ ๊ฒ์ ์์๋ ๋๋ค.
์ด ์ต์ ์ด ์ค์ ๋๋ฉด ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ๊ฐ์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๊ตฌ์ฑ ์ค์ . ์ด๋ฌํ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ํน์ ์๋ช ์ ๋ฐฐ์นํ๋ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
๊ฐ์ฒด ํ์ผ. ํ์ค ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ์ ๋ขฐ์ฑ์ด ๋จ์ด์ง๋ฏ๋ก ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค.
๊ผญ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด์.
"--์กฐ์ฉํ"
์ต์ข ๊ตฌ์ฑ ์ธ์๋ ์๋ฌด๊ฒ๋ ํ์ํ์ง ๋ง์ธ์.
"--๋ ธ์คํํฌ์ค"
์ํ ํ์๊ธฐ๋ฅผ ์จ๊น๋๋ค. ์คํฌ๋ฆฝํธ ์ถ๋ ฅ์ ๋ค์์ผ๋ก ๋ฆฌ๋๋ ์ ํ๋ ค๋ ๊ฒฝ์ฐ ๊ถ์ฅ๋ฉ๋๋ค.
ํ์ผ :
ccconfig --nostatus >config.pl 2>ccconfig.log
"--๋ฒ์ "
ํ๋ก๊ทธ๋จ ์ด๋ฆ, ๋ฒ์ ๋ฐ ๊ฒฝ๋ก๋ฅผ ํ์ค ์ถ๋ ฅ์ ๊ธฐ๋กํฉ๋๋ค.
"--๋๋ฒ๊ทธ"
์๋ง์ ๋๋ฒ๊ทธ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค. ๋น์ ์ด ๋ฌด์์ ํ๊ณ ์๋์ง ์์ง ๋ชปํ๋ค๋ฉด ์ฌ์ฉํ์ง ๋ง์ธ์.
์ฌ์ฉ ์
์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋จํ
ccconfig
์์คํ ์ปดํ์ผ๋ฌ์ ๋ํ ๊ตฌ์ฑ์ ์ํ ๊ฒฝ์ฐ ์ธ์ ์์ด๋ ์ถฉ๋ถํฉ๋๋ค. ํ๋ ๋์
"ccconfig"๊ฐ ์คํ ์ค์ด๋ฉด "stderr"์ ๋ง์ ์ํ ์ ๋ณด๊ฐ ๊ธฐ๋ก๋ฉ๋๋ค. ๊ทธ๋ด ๋
์๋ฃ๋๋ฉด ์ผ๋ฐ์ ์ผ๋ก Perl ํด์ ํ ์ด๋ธ์ "stdout"์ผ๋ก ๋คํํ์ฌ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Convert::Binary::C์ ๋ํ ๊ตฌ์ฑ์ ๋๋ค.
๋ค๋ฅธ ์ปดํ์ผ๋ฌ์ ๋ํ ๊ตฌ์ฑ์ ์ํ๊ฑฐ๋ "ccconfig"๊ฐ ๊ฒฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ
์์คํ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด
ccconfig -c gcc32
์ปดํ์ผ๋ฌ ์ด๋ฆ์ด "gcc32"์ธ ๊ฒฝ์ฐ.
์ถ๊ฐ ์ต์ ์ ์ปดํ์ผ๋ฌ์ ์ ๋ฌํ๋ ค๋ฉด ์ด์ค ๋์ ํ์ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค.
๋ช ๋ น์ค์์:
ccconfig -- -g -DDEBUGGING
or
ccconfig -c gcc32 -- -ansi -fshort-enums
Perl ์ฝ์ด์ ์ธํฐํ์ด์คํ๊ณ ์ถ๋ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ ์ ํฉํ ๊ตฌ์ฑ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ญ๊ฐ :
ccconfig --cc=`perl -MConfig -e 'print $Config{cc}'` \
-- `perl -MConfig -e '$Config{ccflags} ์ธ์'`
์ ์๊ถ
์ ์๊ถ (c) 2002-2015 Marcus Holland-Moritz. ํ๊ถ ์์ . ์ด ํ๋ก๊ทธ๋จ์ ๋ฌด๋ฃ์ ๋๋ค
์ํํธ์จ์ด; Perl ์์ฒด์ ๋์ผํ ์กฐ๊ฑด์ผ๋ก ์ฌ๋ฐฐํฌํ๊ฑฐ๋ ์์ ํ ์ ์์ต๋๋ค.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์ผ๋ก ccconfigp ์ฌ์ฉ