์ด๊ฒ์ Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ Metaconfig ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
Metaconfig - ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ ์์ฑ๊ธฐ
๊ฐ์
๋ฉํ ๊ตฌ์ฑ [ -dhkmostvwGMV ] [ -L DIR ]
๊ธฐ์
๋ฉํ ๊ตฌ์ฑ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค. ๋น์ ์ด ๋ฌด์์ ๋ชจ๋ฅธ๋ค๋ฉด
์คํฌ๋ฆฝํธ ๊ตฌ์ฑ์ ๋ค์์ผ๋ก ๊ฑด๋๋ฐ์ธ์. ์ด์ฉ ๊ฐ์ด๋ ์ด ๋งค๋ด์ผ ํ์ด์ง์ ์น์ . ๋ค๊ฐ ์ํ๋ค๋ฉด
์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ฒด(๊ณต์) ์ค๋ช ๋ฉํ ๊ตฌ์ฑ ๋ฐ ๊ทธ ๋จ์๋ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค.
๋ช ์ ๋ถ๋ถ. ๋ค์์ ์ง์์ด ํ๋ถํ ๋ถ๋ค์ ์ํ ๋น ๋ฅธ ์๊ฐ ๋ฐ ์ฐธ๊ณ ์๋ฃ์ ๋๋ค.
์ฌ์ฉ์.
๋ฉํ ๊ตฌ์ฑ ์ธํธ์์ ์๋ ๋จ์ Metaconfig๊ฐ ์๊ณ ์๋ ๋ชจ๋ ๊ฒ์ ์ ์ํฉ๋๋ค.
์ด์์ฑ. ๊ฐ ๋จ์๋ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์ด๋์๋ ๋ฑ๋กํ ํ์๊ฐ ์์ต๋๋ค.
๊ณต๊ฐ U ๋๋ ํ ๋ฆฌ๋ ๊ฐ์ธ U ๋๋ ํ ๋ฆฌ์ ํฌํจ์ํค๋ ๊ฒ ์ธ์๋. ๋ง์ฝ์
dist ํจํค์ง(metaconfig๊ฐ ์ผ๋ถ์)๊ฐ LIB์ ์ค์น๋ ๋ค์ ๊ณต์ฉ U
๋๋ ํฐ๋ฆฌ๋ LIB/dist/mcon/U์ ๋๋ค. ์ด ์์คํ ์์ LIB ๋๋ ํฐ๋ฆฌ๋ /usr/share/dist์ ๋๋ค. ๋น์ ์
๊ฐ์ธ U ๋๋ ํฐ๋ฆฌ(์๋ ๊ฒฝ์ฐ)๋ ํจํค์ง์ ์ต์์ ๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค.
๋ฌ๋ฆฌ๊ธฐ ์ ์ ๋ฉํ ๊ตฌ์ฑ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
ยท ๋ค์์ ์คํํ์ฌ ํจํค์ง์ ์ต์์ ๋๋ ํฐ๋ฆฌ์ .package ํ์ผ์ ๋ง๋ญ๋๋ค. ํฉํค๋ํธ.
์ด ํ๋ก๊ทธ๋จ์ ๊ทํ์ ํจํค์ง์ ๋ํด ์ง๋ฌธํ๊ณ ๊ทํ๊ฐ ๋งํ ๋ด์ฉ์ ๊ธฐ์ตํ์ฌ
๋ชจ๋ dist ํ๋ก๊ทธ๋จ์ ๋๋ํ ์ ์์ต๋๋ค.
ยท ์ฉ์ด์ง(LIB/dist/mcon)์ ์ฐธ์กฐํ๊ณ ์ ์คํฌ๋ฆฝํธ์ C ํ๋ก๊ทธ๋จ์ ์์ฑํ์ญ์์ค.
Metaconfig๊ฐ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ ๊ธฐํธ ์ธก๋ฉด์์. ๊ตณ์ด ๋งํ ํ์๋ ์์ด
Metaconfig๊ฐ ์ด๋ค ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋์ง ์์๋ผ ๊ฒ์ ๋๋ค.
ยท ์ข ์๋ Makefile ๋๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๋ฐ ํ์ํ .SH ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค.
๊ตฌ์ฑ์ ์ํด ์ ์๋ ๊ฐ์ ๋ํด. ๋ผ๋ ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค. makeSH ๋น์ ์ ๋์ธ ๊ฒ์ ๋๋ค.
์ผ๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ script.SH ํ ํ๋ฆฟ์ผ๋ก ๋ณํํฉ๋๋ค. ์ผ๋ถ ํธ์ง์ ์ฌ์ ํ โโํ์ํฉ๋๋ค.
๊ฒฐ๊ณผ .SH ํ์ผ์์ ์ํ๋์ด ๋ณ์ ๊ตฌ์ฑ ๋ถ๋ถ์
์คํฌ๋ฆฝํธ์ ์๋จ ๋ถ๋ถ(๋ค์์ ์ํด ์์ฑ๋ ์ธ๋ผ์ธ ์ฃผ์ ์ฐธ์กฐ) makeSH .SH ๋ด์์
ํ์ผ).
ยท ์ต์์ ๋๋ ํ ๋ฆฌ์ MANIFEST.new ํ์ผ์ ์์ฑํ์ฌ ๋ค์์ ๋ชจ๋ ํ์ผ์ ๋์ดํฉ๋๋ค.
๋น์ ์ ํจํค์ง. ์ด ํ์ผ์ ๋น๊ณต๊ฐ๋ก ์ ์ง๋๋ฉฐ ์ต์ข ํ์ผ์ ์ผ๋ถ๊ฐ ๋์ง ์์ต๋๋ค.
๋ถํฌ. (ํธ์์ MANIFEST ํ์ผ์ ๋ค์์์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฉํ ๊ตฌ์ฑ if
์์ง MANIFEST.new ํ์ผ์ด ์์ต๋๋ค.) ํ์ผ ์ด๋ฆ์ ๊ฐ ํ์ผ์ ์ฒซ ๋ฒ์งธ ํ๋์ฌ์ผ ํฉ๋๋ค.
์ . ๊ณต๋ฐฑ ๋ค์ ํ์ผ์ ์ค๋ช ํ๋ ์งง์ ์ฃผ์์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ค์ง
์์ค ํ์ผ์ด ๊ฑฐ๊ธฐ์ ๋์ด๋์ด์ผ ํฉ๋๋ค. ํน์ ํ์ผ ํจ์น ๋ ๋ฒจ.h (์ด๊ฒ์
ํจ์น ๋๊ตฌ์ ์ํด ์ฒ๋ฆฌ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฉ๋๋ค. -- ์ฐธ์กฐ ๊ผญ(1))์
MANIFEST.new ํ์ผ์ด์ง๋ง ์ผ๋ถ ๋๊ตฌ์์๋ ์๋์ผ๋ก ๋ฌด์๋ ์ ์์ต๋๋ค. ๊ฒฝํ์,
RCS์์ ๊ด๋ฆฌํ๋ ํ์ผ๋ง ์ฌ๊ธฐ์ ๋์ด๋์ด์ผ ํฉ๋๋ค. ํจ์น ๋ ๋ฒจ.h ํ์ผ ์กด์ฌ
ํ ๊ฐ์ง ์ค์ํ ์์ธ.
ยท ์ ํ์ ์ผ๋ก ๋ด๋ณด๋ธ ๋ฒ์ ์ด ๋ MANIFEST ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
๊ทํ์ MANIFEST.new. ํด๋น ํ์ผ์ ๋ฆด๋ฆฌ์ค์ ์ผ๋ถ๋ก ๋ง๋ค์ด์ ธ์ผ ํฉ๋๋ค. ์ฆ, ๋ ๋ฆด๋ฆฌ์ค ๋ชจ๋์ ๋์ด๋์ด์ผ ํฉ๋๋ค.
MANIFEST.new ๋ฐ MANIFEST ์์ฒด. ์ค ํ๋ ๋ฉํ ๊ตฌ์ฑ ์ ๋์ ์ด๊ฒ์ ๋ํด ์๊ณ ์์ต๋๋ค
ํ์ผ์ ํ์ธํ๊ณ ๊ตฌ์ฑ์ด ๋ฆด๋ฆฌ์ค ํ์ธ์ ์ํํ๋๋ก ๊ฐ์ ํ์ฌ ๋ชจ๋ ํ์ผ์ ํ์ธํฉ๋๋ค.
๋ฐฐํฌํ์ ์ผ๋ถ๊ฐ ๋์ด๋์ด ์์ต๋๋ค. MANIFEST ๋ฐ MANIFEST.new ํ์ผ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
๋งํฌ๊ฐ ์๋๋ผ ๊ตฌ๋ณ๋์ด์ผ ํฉ๋๋ค.
ยท ์์ ํ๋ ค๋ .U ํ์ผ์ ๊ฐ์ธ U ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํฉ๋๋ค. ๋ชจ๋ .U ํ์ผ
๊ฐ์ธ U ๋๋ ํ ๋ฆฌ์ ์๋ ๋๋ ํ ๋ฆฌ๊ฐ ๊ณต๊ฐ U ๋๋ ํ ๋ฆฌ์ ์๋ ๋๋ ํ ๋ฆฌ๋ณด๋ค ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฐฐ ๊ท์น์. ์๋ฅผ ๋ค์ด, ์ด๋ค ์ ๋์ ๊ฐ์ ๋ก ํฌํจ์ํค๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ End.U๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ ๋๋ค.
ํ์ผ์ .U ๋๋ ํ ๋ฆฌ์ ์ถ๊ฐํ๊ณ ์ข ์ ํญ๋ชฉ์ผ๋ก ์ํ๋ ์ ๋์ ์ด๋ฆ์ ์ถ๊ฐํ์ธ์.
?MAKE: ๋ผ์ธ์ ๋. ํน์ ์ ๋์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก๋ง ๊ฐ์ ํ ์ ์์ต๋๋ค.
Warn_*.U ๋ฐ Chk_*.U ํ์์ ๋๋ค. ํน์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉ์ ์ ์ํ ์๋ ์์ต๋๋ค.
Myinit.U๋ฅผ ํจํค์ง์ ๊ฐ์ธ U ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํ์ฌ ๋ณ์๋ฅผ ๊ตฌ์ฑํ๊ณ
ํด๋น ๋จ์์ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ด์ ๋ฌ๋ฆด ์ค๋น๊ฐ ๋์์ต๋๋ค. ๋ฉํ ๊ตฌ์ฑ. ๊ทธ๋ฌ๋ฉด ๊ตฌ์ฑ ํ์ผ ๋ฐ ์ ํ์ ์ผ๋ก
๊ตฌ์ฑ_h.SH ํ์ผ(์์ค์์ C ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ) ์์ฑ๋ ํ์ผ์
ํ์ํ ๊ฒฝ์ฐ MANIFEST.new์ ์๋์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค. ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.
MANIFEST ํ์ผ.
์ ์ฅ์น๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
ยท ์ ์ฌํ ์ ๋์ ์๋ก์ด .U ํ์ผ๋ก ๋ณต์ฌํฉ๋๋ค. ์ ํํ ์ด๋ฆ์ ๋ค์์ ์ด๋ฆ์ด์ด์ผ ํฉ๋๋ค.
์ฅ์น์์ ์์ฑ๋ ๋ณ์์ ๋๋ค. ์ด๋ ๋จ์ง ์ฌ์ฉ์์ ํธ์๋ฅผ ์ํ ๊ฒ์ผ ๋ฟ,
์๊ตฌ ์ฌํญ. ํ์ผ ์ด๋ฆ์ด ์๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด 12์ ์ดํ์ฌ์ผ ํฉ๋๋ค.
์ค์ ๋ก RCS๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋๋ก ์๋ง๋ 10๊ฐ ์ดํ๊ฐ ๋์ด์ผ ํ ๊ฒ์ ๋๋ค.
a .U,v ๋์ ์๋ฆฌ์ง ์๊ณ ํ์๋ฉ๋๋ค. Metaconfig๋ ์ฒซ ๊ธ์์ ๋์๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ
์ด ์ฅ์น์์ ์ค์ ๋ก ๋ณ์๊ฐ ์์ฑ๋๋์ง ํ์ธํ๋ฏ๋ก ๋๋ฌธ์๋ก ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
์ ๋ณ์๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ ์ ๋ ์ด๋ฆ์ ๋๋ค.
ยท ์ํ๋ ๋๋ก ์ .U ํ์ผ์ ํธ์งํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ?MAKE: ๋ผ์ธ์
์์กด์ฑ; ์ต์ข ๋ชฉ๋ก ์ฝ๋ก ์์๋ ์ด ์ฅ์น๊ฐ ์ ์ํ๋ ๋ชจ๋ ๋ณ์๊ฐ ์์ต๋๋ค.
๋ง์ง๋ง ์ฝ๋ก ๋ค์๋ ์ด ๋จ์๊ฐ ์์กดํ๋ ๋ชจ๋ ๋ณ์(๋๋ ๋ค๋ฅธ ๋จ์)๊ฐ ํ์๋ฉ๋๋ค.
์ด ๋ชฉ๋ก์ด ์ ํํ๋ค๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ข ์์ฑ์ด ์ ํ์ฌํญ์ด๊ณ
๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ข ์์ฑ ์์ '+' ๊ธฐํธ๋ฅผ ๋ถ์ฌ์ผ ํฉ๋๋ค. ๊ทธ๋งํผ
์ค์ ๋ก ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๊ธฐํธ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ํด๋น ๋จ์๊ฐ ๋ก๋๋์ง ์์ต๋๋ค.
๋ค๋ฅธ ๋จ์๋ก.
ยท ๊ฐ๋ฅํ ํ, ๋ค์์ ์ ์๋ ์ ๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฅ์น๋ฅผ ๋งค๊ฐ๋ณ์ํํ์ญ์์ค.
?INIT: ๋ผ์ธ. ๊ทธ๋ฌ๋ฉด ๋ณ์ ์ ์๊ฐ Init.U ์ ๋์ผ๋ก ์ด๋๋ฉ๋๋ค.
Init.U ๋ค์์ ํฌํจ๋ Myinit.U์ ์ ์์ ์ํด ์ฌ์ ์๋ ์ ์์ต๋๋ค.
ยท ?H: ๋ผ์ธ์ผ๋ก ์ํ๋ C ๊ธฐํธ์ ์ ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ค์์ผ๋ก ์์ํ๋ ์ค
?H:?%<: .U ํ์ผ์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ต์ข config.h ํ์ผ์ ์ถ๊ฐ๋ฉ๋๋ค.
Metaconfig๋ ์ด ์ฅ์น๊ฐ ํ์ํ๋ค๊ณ ๊ฒฐ์ ํฉ๋๋ค. %<๋ ์ฅ์น ์ด๋ฆ์ ๋ํ๋ ๋๋ค.
๋ค์์ ๋ฐ๋๋ค๋ฉด ์ด๋ ํ์ผ ์ด๋ฆ์ด๊ธฐ๋ ํฉ๋๋ค(.U ์ ์ธ).
ํ์ฝ. ๋ณ์ ์ค ํ๋์ธ ๊ฒฝ์ฐ ํญ์ ๊ฐ ?H: ํ์ ์ฃผ์์ ์ถ๊ฐํ์ธ์.
์ค ์๋ถ๋ถ์ ๋์ฒด๋ ์ฃผ์์ ๋ง์น์ง ์๊ณ ์์ํฉ๋๋ค. ๋ชจ๋ ์
d_๋ก ์์ํ๋ ๋ณ์๊ฐ ์ด๋ฐ ์ผ์ ํ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํ์ธ์. ?%<:๋ฅผ ์๋ตํ๋ฉด
Metaconfig๋ ์ ์๊ฐ ํ์ํ ๊ธฐํธ๋ฅผ ์ง๊ดํ๋ ค๊ณ ์๋ํฉ๋๋ค.
config.h์ ํฌํจ๋ฉ๋๋ค.
ยท ์ฉ์ด์ง ์ ์๋ฅผ ?S: ์ ๋ณ์์ฉ ์ค ๋ฐ ?C: C์ฉ ์ค๋ก ์ถ๊ฐํฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ ๋ณ์. ์๋ฅผ ๋ณด๋ ค๋ฉด ํ์ฌ ๋จ์๋ฅผ ์ฐธ์กฐํ์ธ์. ๋งค์ฐ ์ค์ํฉ๋๋ค
๊ฐ ํญ๋ชฉ์ ์ผ์ชฝ ๋ง์ถค ๊ธฐํธ ์ด๋ฆ์ผ๋ก ์์ํ๊ณ ๊ฐ ํญ๋ชฉ์ ?C:๋ก ๋๋ฉ๋๋ค. ๋๋
?์์ค:. ์ . C ์ ์ฒ๋ฆฌ๊ธฐ ๊ธฐํธ ํญ๋ชฉ์ ๋ณํํ๋ ์๊ณ ๋ฆฌ์ฆ
config.h์ ๋ํ ์ฃผ์ ์ฉ์ด์ง์ ์ด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
ยท ๋ชจ๋ ์์๋ฅผ ํ์ธํ์ธ์. ๋ผ์ธ ๋ง์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
?RCS: ๋ฐ ?X: ๊ธฐ๋ณธ์ ์ผ๋ก ์ฃผ์์ ๋๋ค.
?MAKE: ๋ฉํ ๊ตฌ์ฑ ์ข ์์ฑ
?Y: ๋จ์ ๋ ์ด์์ ์ง์๋ฌธ
?S: ์ฉ์ด์ง ์ ธ ์ ์
?C: ์ฉ์ด์ง C ์ ์
?H: config.h ์ ์
?M: confmagic.h ์ ์
?W: ์ํ๋ ๊ธฐํธ
?V: ๋ณด์ด๋ ๊ธฐํธ
?F: ๋ณธ ๊ธฐ๊ธฐ์์ ์์ฑ๋ ํ์ผ
?T: ์ฌ์ฉ๋ ์์ ์ ๊ธฐํธ
?D: ์ ํ์ ์ข ์์ฑ ๊ธฐ๋ณธ๊ฐ
?O: ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋จ์๋ฅผ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
?LINT: ๊ธ์์ฑ ํํธ
?INIT: ์ ๊ธฐํธ ์ด๊ธฐํ
๋ค์์ ์ค์ ์์์ ํ์ฉ๋๋ ๋ค์ํ ํ์์ ๋ณด์ฌ์ฃผ๋ ์์ ๋๋ค.
?RCS: $RCS-ID$
?RCS: ์ ์๊ถ ์ ๋ณด
?RCS: $RCS-๋ก๊ทธ$
?์์ค:
?X: ์ธ์์ ์ธ ์
?์์ค:
?MAKE:d_one XNUMX: XNUMX +XNUMX XNUMX
?MAKE: -$@% ์ถ๊ฐ ์ ํ
?Y:๊ธฐ๋ณธ๊ฐ
?S:d_one:
?S: ์ฒซ ๋ฒ์งธ ์ ๊ธฐํธ, ์กฐ๊ฑด๋ถ๋ก ONE์ ์ ์ํฉ๋๋ค.
?์์ค:.
?S:๋:
?S: ๋ ๋ฒ์งธ ์ ๊ธฐํธ, XNUMX์ ๋ํ ๊ฐ.
?์์ค:.
?์๋ฟ:
?C: ์ฒซ ๋ฒ์งธ C ๊ธฐํธ.
?์จ:.
?C:๋:
?C: ๋ ๋ฒ์งธ C ๊ธฐํธ.
?์จ:.
?H:#$d_one XNUMX /**/
?H:#define TWO "$two"
?H:#$d_one ONE_TWO "$two"
?์๊ฐ:.
?M:ํ๋ฆฝ: HAS_FLIP
?M:#ifndef HAS_FLIP
?M:#define ํ๋ฆฝ(x) ํ๋กญ(x)
?M:#endif
?์ค:.
?W:%<:one_two
?V:p_XNUMX p_two:p_three
?F:ํ์ผ ./ftest !tmp
?T:tmp var
?D:two='undef'
?LINT:XNUMX๊ฐ ๋ณ๊ฒฝ
?INIT:two_init='2'
: ์ ๋์ ๊ตฌํํ๋ ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
p_one='ํ๋'
p_two='๋'
p_์ธ=""
ํ ๋ฒ ๋ ๋งํ๊ฒ ์ต๋๋ค. ์์ ๋จ์ ์ ์๋ ๋ชจ์กฐํ ํ๋๋ง ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๊ฒ
๋ค๋ฅธ ๊ฐ๋ฅ์ฑ. ๊ทธ๋ฐ ์ ๋์ ์ด์จ๋ ๊ฑฐ์ ์ธ๋ชจ๊ฐ ์์ ๊ฒ์ ๋๋ค... ์ข ๋
๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ฌ๊ธฐ์ ์ค๋ช ๋์ด ์์ง ์์ต๋๋ค. ๋ค์์ ์ฐธ์กฐํ์ธ์. ๋ช ์ ๋ ๋ง์ ์น์
์์ ํ ์ ๋ณด.
ยท ์ฅ์น๋ฅผ ์ ์ ํ๊ฒ ๊ณต์ฉ ๋๋ ๊ฐ์ธ U ๋๋ ํ ๋ฆฌ์ ๋ฃ์ต๋๋ค.
ยท ์ฌ๋ฐฉ์ก ๋ฉํ ๊ตฌ์ฑ.
ยท ๊ทํ์ ์ฅ์น๋ฅผ ๋ค์์ผ๋ก ๋ณด๋ด์ญ์์ค. [์ด๋ฉ์ผ ๋ณดํธ] (Raphael Manfredi) ๋ง์คํฐ ์นดํผ์ ํฌํจ์ํค๊ธฐ ์ํด,
๊ทธ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๊ด์ฌ์ฌ๋ผ๊ณ ์๊ฐํ๋ค๋ฉด.
์ฐพ์ ์ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
ยท Loc.U๋ฅผ ํธ์งํ๊ณ ?MAKE: ์ค(์ค ์ฌ์ด)์ ํ๋ก๊ทธ๋จ ์ด๋ฆ์ ์ถ๊ฐํฉ๋๋ค.
๋ ๊ฐ์ ์ฝ๋ก ) ๋ฐ loclist ๋๋ trylist(ํ๋ก๊ทธ๋จ์ด ์ง์๋๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ)
ํ์ ์ฌ๋ถ).
ยท ๋ฉํ ๊ตฌ์ฑ์ ๋ค์ ์คํํฉ๋๋ค.
ยท ์ผ๋ฐ์ ์ธ ๋ด์ฉ์ด๋ผ๊ณ ์๊ฐ๋๋ฉด ๋ง์คํฐ ์นดํผ์ ํฌํจ๋๋๋ก ๊ทํ์ ์ฅ์น๋ฅผ ๋์๊ฒ ๋ณด๋ด์ฃผ์ญ์์ค.
๊ด์ฌ.
.U ํ์ผ ์์ฑ ์ ์ฐธ๊ณ ์ฌํญ:
* rm์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ํํ์ธ ์์คํ ์ด ์์ผ๋ฏ๋ก ํญ์ "rm -f"๋ฅผ ์ฌ์ฉํ์ญ์์ค.
* '--'๋ ๋ชจ๋ ์์์ ์๋ํ์ง ์์ผ๋ฏ๋ก "set -- ..."๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. "์ธํธ x ...;
์ฎ๊ธฐ๋ค".
* unset์ ์์ ํ ์ด์ ๊ฐ๋ฅํ์ง ์์ผ๋ฏ๋ก "unset ENV"๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๋์ "ENV=''"๋ผ๊ณ ๋งํ์ธ์.
* ์ ๋์ค ์์คํ ๋๋ฌธ์ ํญ์ echo " "(๊ณต๋ฐฑ ํฌํจ)๋ฅผ ์ฌ์ฉํ์ธ์.
*๋ง ์ฌ์ฉ test -r, -w, -f ๋๋ -d๊ฐ ์ ์ผํ ํด๋์ฉ ์ค์์น์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ~ ์์
ํนํ "test -x"๋ ํผํ์ธ์.
* V7๊ณผ ํจ๊ป ์ ๊ณต๋๋ ํ๋ก๊ทธ๋จ๋ง ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฌ๋์ด ํด๋น ํ๋ก๊ทธ๋จ์ ๊ฐ์ง๊ณ ์์์ ์ ์ ์์ต๋๋ค.
* ์กฐ๊ฑด๋ถ๋ก grepํ๋ ค๋ ๊ฒฝ์ฐ $contains๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๋ชจ๋ grep์ด
ํฉ๋ฆฌ์ ์ธ ์ํ. '>/dev/null์ ์ฌ์ฉํ์ฌ ์ถ๋ ฅ์ /dev/null๋ก ๋ฆฌ๋๋ ์ ํด์ผ ํฉ๋๋ค.
2>&1'.
* ๋ชจ๋ sh๊ฐ ํ์์ ๊ตฌ์ฑ์ ์๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ "if [...]" ๋์ "if test"๋ฅผ ์ฌ์ฉํ์ญ์์ค.
* ์ ์ด์ค์ผ์ดํ ๋ฐ ๊ธฐ๋ณธ๊ฐ์ ์ํํ ์ ์๋๋ก ์ ๋ ฅ์ myread ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
ํ๊ฐ. ์ผ๋ฐ์ ์ธ ํํ๋
์ผ์ด์ค "$grimble" in
'') dflt=452;;
*) dflt="$grimble";;
๊ทธ C
rp='๊ทธ๋ฆฌ๋ธ์ด ๋ช ๊ฐ๋ ์๋์?'
. ./myread
๊ทธ๋ฆผ๋ธ="$ans"
* ์ ํ์ฌํญ์ ๊ฐ์ง๊ธฐ ์ํด ํ์ผ ๊ฒฝ๋ก๋ช ์ ์์ฒญํ ๋ getfile ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
~ ์ด๋ฆ ํ์ฅ ๋ฐ ์จ์ ์ฑ ๊ฒ์ฌ. ์ ์ฒด ์ค๋ช ์ Getfile.U ์ ๋์ ์ฐธ์กฐํ์ธ์.
* ํญ์ ๋ฃ์ด๋์ธ์
$startsh
์์๋๊ฑฐ๋ ์ ๊ณต๋ ๋ชจ๋ ์์ฑ๋ ์คํฌ๋ฆฝํธ์ ์๋จ์
๊ตฌ์ฑ.
* ๊ฐ์ฒด ํ์ผ์ด ๋ค์์ผ๋ก ๋๋๋ ์ฌ์ค๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ UNIX-ism์ ๊ฐ์ ํ์ง ๋ง์ญ์์ค. .o ๊ณผ
๋์๊ด ์ด๋ฆ์ด ๋ค์์ผ๋ก ๋๋๋ ๊ฒ .a. ์ฌ์ฉ $_o ๊ณผ $_a ๋์ ๋ณ์(์ฐธ์กฐ
์ ๋์ค.U).
* ์ปดํ์ผ-๋งํฌ-์คํ ํ ์คํธ๋ฅผ ์ํํ ๋ ํญ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์ญ์์ค.
$cc $ccflags $ldflags try.c -o $libs ์๋
์ผ๋ถ ์์คํ ์์๋ ์ปดํ์ผํ๊ธฐ ์ ์ ์ฐ๊ฒฐ ํ๋๊ทธ๋ฅผ ์ง์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋์(ํํ ์ฐ๊ฒฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ธ).
* ์ถ๋ ฅ์ ๋ฆฌ๋๋ ์ ํ๊ธฐ ์ํด '>&4'๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ์ค๋ช ์ #4์ ์ค์ํ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค.
ํด๋น ๋ฉ์์ง๋ง ํ์๋ฉ๋๋ค. -s ์ค์์น๊ฐ ์ฃผ์ด์ง๋ค ๊ตฌ์ฑ ๋ฅผ ์์ฒญํ์ฌ ์ด์ ๋ํด ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋ช ๋ น์ค(์๋ ๋ชจ๋)
* ํญ์ ๊ฐ์ฅ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ์์ผ๋ก ๊ธฐ๋ฅ์ด ์กด์ฌํ๋์ง ํ์ธํ๋ ค๊ณ ๋ ธ๋ ฅํ์ญ์์ค.
libc๋ฅผ grepํ ์ ์์ผ๋ฉด "if bsd"๋ผ๊ณ ๋งํ์ธ์. ์์ค์๋ ํ์ด๋ธ๋ฆฌ๋ ์์คํ ์ด ๋ง์ด ์์ผ๋ฉฐ,
๊ฐ ๊ธฐ๋ฅ์ ์ ์ ๋ก ์๊ฑฐ๋ ๋จ์ด์ ธ์ผ ํฉ๋๋ค.
* ํญ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ผ๋ก ๊ธฐ๋ฅ์ด ์กด์ฌํ๋์ง ํ์ธํ๋ ค๊ณ ๋ ธ๋ ฅํ์ญ์์ค.
๋ค๋ฅธ ํจํค์ง๋ ๊ทํ์ ์ฅ์น๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
* ์์ฌ์ค๋ฌ์ด ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๊ณ ๋ฌธ์ํ์ธ์. ์๋ฌด๊ฒ๋ ๊ฐ์ ํ์ง ๋ง์ญ์์ค.
* ์ฌ์ฉ์๊ฐ ํ๋ ธ๋ค๊ณ ์๊ฐํ๋ค๋ฉด, ๊ทธ ์ฌ์ฉ์๊ฐ ๋ง์ ์๋ ์๋ค๋ ์ฌ์ค์ ์ธ์ ํ์ญ์์ค. ์ ์ํ
์๋ฅผ ๋ค์ด, ๊ทธ๋ ์์ ์ด ์ฌ์ฉํ ์์คํ ์ด ์๋ ๋ค๋ฅธ ์์คํ ์์ ๊ตฌ์ฑ์ ์คํ ์ค์ผ ์ ์์ต๋๋ค.
์ต์ข ์ ํ์.
Metaconfig๋ ๋๋ ํฐ๋ฆฌ์ ๋ค์ ์ด๋ฆ์ ์์ฝํ๋ฉฐ, ๊ทธ๋ฌํ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด
๋ฐฉํด๋ฅผ ๋ฐ๊ฑฐ๋ ๋ค๋ฅธ ์์์น ๋ชปํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
.์ฐ/*
๊ตฌ์ฑ
๊ตฌํจ
์๋์ ๋ค ๋จ์ด์ง
๊ตฌ์ฑ
๊ตฌ์ฑ_h.SH
confmagic.h
์ /*
๋งค๋ํ์คํธ.new
๋ํ ๊ตฌ์ฑ์ ์คํ๋๋ ๋๋ ํฐ๋ฆฌ์์ ์ด๋ฌํ ์ด๋ฆ์ ๋ฐฉํดํ ์ ์์ต๋๋ค.
์ /*
config.sh
๊ตฌ์ฑ.h
์ต์
๋ค์ ์ต์ ์ ๋ค์์์ ์ธ์๋ฉ๋๋ค. ๋ฉํ ๊ตฌ์ฑ:
-d ๋๋ฒ๊ทธ ๋ชจ๋๋ฅผ ์ผญ๋๋ค. ๋๋ฒ๊น ์ ํ์ง ์๋ ํ ๋ณ๋ก ์ ์ฉํ์ง ์์ต๋๋ค. ๋ฉํ ๊ตฌ์ฑ
์์ฒด.
-h ๋์๋ง ๋ฉ์์ง๋ฅผ ์ธ์ํ๊ณ ์ข ๋ฃํฉ๋๋ค.
-k ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ์งํ์ฌ ๋ค์์์ ์ฌ์ฉ๋๋ ์์ ํ์ผ์ ๊ฒ์ฌํ ์ ์์ต๋๋ค.
๋ฉํ ๊ตฌ์ฑ ๋น์ ์ ๊ตฌ์ถ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ. ๋๋ฒ๊น ํ ๋๋ง ์ ์ฉํฉ๋๋ค.
๋จ์.
-m ๋ง์ ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๊ณต๊ฐ์ ๊ฐ์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ธฐํธ ๊ฒ์ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌ์ํ๋ฉด์ ์๋นํ ์๊ฐ์ด ์์๋๋ ์์ค ํ์ผ
์๋น...
-o ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐํธ๋ฅผ ์ ๊ธฐํธ์ ๋งคํํฉ๋๋ค. ์์ง ์ฌ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด ์ค์์น๋ฅผ ์ฌ์ฉํ์ธ์.
์์ค ์ฝ๋์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐํธ๊ฐ ์์ผ๋ฉฐ ์ ๊ฑฐ๋ฅผ ์ํ์ง ์๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์
์ง๊ธ์ ๊ทธ๋ค์ ๋๋ค. ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐํธ๋ ๋ฌด์๋ฉ๋๋ค.
๋น์ ์๊ฒ ๊ฒฝ๊ณ ๋ฅผ ์ค ๊ฒ์ ๋๋ค ๋ฉํ ๊ตฌ์ฑ.
-s ๋ฌด์ ๋ชจ๋๋ฅผ ์ผ์ธ์.
-t ๋ฐ๊ฒฌ๋ ๊ธฐํธ๋ฅผ ์ถ์ ํฉ๋๋ค.
-v ์์ธ ๋ชจ๋๋ฅผ ์ผญ๋๋ค.
-w ์ํ๋ ํ์ผ์ด ์ต์ ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ์๊ฐ๊ณผ ๊ธฐ์ต์ ๊ฑด๋๋ฐ๊ฒ ๋ฉ๋๋ค.
์์ค ์ฝ๋ ์ค์บ๋ ๋จ๊ณ๋ฅผ ์๋นํ๊ณ ์๋ ค์ง ๊ธฐํธ๋ฅผ ์ฐพ์ต๋๋ค. ๊ทธ๊ฑธ ์จ
์์ค ํ์ผ์ด ๋ค์๊ณผ ๊ด๋ จํ์ฌ ๋ณ๊ฒฝ๋์ง ์์๋ค๋ ๊ฒ์ ์๊ณ ์๋ ๊ฒฝ์ฐ์๋ง
์์์ฅ ๋ฉํ ๊ตฌ์ฑ ์ฌ์ฉ๋ ๊ธฐํธ.
-G GNU๋ ์ ๊ณตํ์ธ์ ๊ตฌ์ฑ-์์ฑ๋ ํ๋ฐํธ ์๋์ ์ ์ฌ ๊ตฌ์ฑ
์คํฌ๋ฆฝํธ๋ ๋ฐฐํฌํ์ ํฌํจ๋ฉ๋๋ค. ์ด๊ฑด ํฌ์ฅ์ง์ผ ๋ฟ์ด์ผ
์ฃผ๋ณ ๊ตฌ์ฑ ์์ฐ์ค๋ฝ๊ฒ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ง๋ง ์ต์ํ ์ฌ๋๋ค์ด
์๋ก์ด ๋ฐฐํฌํ์ ์ ํ ๋ GNU ๋๊ตฌ๋ ์์ค๋์ง ์์ต๋๋ค.
-L DIR ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์น๋ฅผ ์ฌ์ ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก metaconfig์๋ง ์ ์ฉํฉ๋๋ค.
์ ์ง๋ณด์ ๋ด๋น์๋ ๊ฐ๋ฐ ์ค์ธ ์ฅ์น๋ฅผ ๋ก์ปฌ์์ ์ฌ์ฉํ๋ ๋์
๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ๋ค. NS DIR ์ง์ ๋ ๊ฒ์ ๋จ์๋ฅผ ํฌํจํ๋ ๊ฒ์ ๋๋ค
U ๋๋ ํ ๋ฆฌ.
-M ์์ฐ์ ํ์ฉ confmagic.h ์ผ๋ถ ์ฐ์ ์๋์ผ๋ก ๋ค์ ๋งคํํ๋ ํ์ผ
๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋์์ผ๋ก ์๋ ค์ง ๊ธฐํธ b์นดํผ() ์ฌ๋งคํ ์ค
ํฌ๋ช ํ๊ฒ memcpy () ์ฌ์ฉํ ์ ์์ ๋. ์ด ์ต์ ์ด ์ผ์ ธ ์์ต๋๋ค.
๋ ์๋์ผ๋ก confmagic.h ํ์ผ์ด ์ต์์ ๋๋ ํฐ๋ฆฌ์ ์กด์ฌํฉ๋๋ค.
์ด ์ต์ ์ ์๊ตฌ์ ์ผ๋ก ๋นํ์ฑํํ๋ ค๋ฉด ํด๋น ํ์ผ์ ์ ๊ฑฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
-V ๋ฒ์ ๋ฒํธ๋ฅผ ์ธ์ํ๊ณ ์ข ๋ฃํฉ๋๋ค.
์ด์ฉ ๊ฐ์ด๋
์ด (๊ธด) ์น์ ์ ๋ค์์ ๋ํ ์๊ฐ์ ๋๋ค. ๋ฉํ ๊ตฌ์ฑ, ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฒ์ ๋ฐฐ์ธ ๊ฒ์ ๋๋ค
๊ธฐ์ด. ์ฌ์ฉ๋ฒ์ ์ด๋ฏธ ์๊ณ ๊ณ์๋ค๋ฉด ๋ฉํ ๊ตฌ์ฑ, ๋ค์์ผ๋ก ์์ ํ๊ฒ ๊ฑด๋๋ธ ์ ์์ต๋๋ค
์๋ด
์ดํด๋ณด๊ธฐ
์ผ๋ฐ์ ์ผ๋ก ํน์ ํ๋ซํผ์์ ์ปดํ์ผํ ์์ค ํจํค์ง๋ฅผ ์ป์ผ๋ ค๋ฉด
๊ธฐ๋ณธ Makefile์ ํธ์งํ๋ ค๋ฉด(์๋ ๊ฒฝ์ฐ) C ์ปดํ์ผ๋ฌ๋ฅผ ์ ํํ๊ณ
์ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๊ณ ๋ค์์ ์คํํ์ญ์์ค. ํ์ธ ๋ช ๋ น. ํจํค์ง๊ฐ ํฉ๋ฆฌ์ ์ด๋ผ๋ฉด
์ ์์ฑ๋๋ฉด ์ปดํ์ผ๋ฉ๋๋ค(๊ฒฝ๊ณ ์ต์ ์์ด :-). ๊ทธ ์์ฒด๋ก ๋ง์ง๋ง
์ค๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ค์ํ UNIX ํ๋ซํผ์ ๊ณ ๋ คํ๋ฉด ๋ฌธ์ฅ์ ์ค์ ์ฑ๋ฅ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ ๋ค์์ฑ์ ํจํค์ง ์์ฑ์๊ฐ ๊น์ด ๊ด์ฌํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํ์ค์ ์ธ ์๋, ์ถ์ธก ๋ฐ ์กฐ์์ ํตํด ์ฌ๋ฐ๋ฅธ ์ ํ์ ์ฐพ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ต๋๋ค.
์์คํ ํฌํจ ๋ฐ ์ ํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ์ ๋ชจ๋ ์ฌ๋ฅ์๋ ๋ถ๊ตฌํ๊ณ ์ ์๋ ์ด๋ค ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ด ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์์คํ ํธ์ถ์ด ๊นจ์ก๊ฑฐ๋ ์ผ๋ถ ์์คํ ๊ตฌ์กฐ์ ํ์ค ํ๋๊ฐ ํ๋๋ ๋ถ์กฑํ๊ฑฐ๋
๋จ์ํ ์ฃผ์ด์ง ํฌํจ ํ์ผ์ด ์กด์ฌํ๋์ง ์ฌ๋ถ. ๊ทธ๋ฆฌ๊ณ ๋๋ ์์์ ์ธ ๊ฒ์ ๊ณ ๋ คํ์ง ์์ต๋๋ค
์ ์ํด ๋ฐํ๋ ์ ํ๊ณผ ๊ฐ์ ๊ฐ์ malloc () ๊ธฐ๋ฅ์ด๋ ์กด์ฌ
์ด๋ฆ ๋ฐ๊พธ๊ธฐ () ๋ช ๊ฐ์ง ์๋ฅผ ๋ค๋ฉด ์์คํ ํธ์ถ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ์ ์ธ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ค๋ฉด ๊ทธ๋ฌํ ์ง์์ด ํ์ํฉ๋๋ค.
ํด๋ ์ฑ.
์ด์ ์ฐ๋ฆฌ ์์ ์ ํ๋ํ์ง ๋ง์๋ค. ํด๋น ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ ํฐ ๊ธฐ์ ์ด ํ์ํ์ง๋ง
์์คํ ๋ ๋ฆฝ์ ์ธ ๋ฐฉ์์ผ๋ก ์์ฑ๋๋ฏ๋ก ๋ ๋ง์ ์ด์ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํน์ ์์คํ ์ ๋ํ ์ผ๋ถ ๊ฐ์ ์ด ์ฐธ์ด๊ฑฐ๋ ๊ฑฐ์ง์ด๋ผ๋ ์ฌ์ค์๋ง ์์กดํฉ๋๋ค.
๊ฐ ๊ฐ์ ์ ์๋ก ๊ด๋ จ์ด ์์ต๋๋ค. ์ฆ, ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํ์ง ์์ต๋๋ค.
BSD ์์คํ ์ด๊ฑฐ๋ USG ์์คํ ์ ์์ต๋๋ค. ์๋ฌดํผ ์์ฆ์ ๋๋ฌด ๋ชจํธํด์. ์๋, ์ฐ๋ฆฌ๋ ์ํด์
์์ค ์ฝ๋์ ๋งํด๋ณด์ธ์: ์ด ์์คํ ์๋ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ () ์์คํ ํธ์ถ๊ณผ malloc ()
๋ฅผ ๋ฐํ (๋ฌดํจ์ *) ๊ฐ.
Metaconfig๋ ์ด๋ฌํ ์์ ์ ์ํํ ์ ์๋ ๋๊ตฌ์ ๋๋ค.
๋ชจ๋ ๊ฒ์ด ์ ์งํ๋๋ค๋ฉด Makefile์ ์ง์ ํธ์งํด์ผ ํฉ๋๋ค. ์คํํ์ฌ ๋ฉํ ๊ตฌ์ฑ, ๋น์ ์
๋ช ๋ช ๋ ์ ์คํฌ๋ฆฝํธ ๊ตฌ์ฑ. ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ์ ๋ง์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์์ต๋๋ค.
ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ์กด ์์ 99%์์ ์คํ๋๋๋ก ๋ณด์ฅํ๋ ๋ด๋ถ
๊ธ์ฐ๊ธฐ. ๊ตฌ์ฑ์ ๋์ ์์คํ ์ ์กฐ์ฌํ์ฌ ์์ฌ์ค๋ฌ์ด ๊ฒฝ์ฐ ์ง๋ฌธํ๊ณ
ํ๋์ ๋จ์ผ ์ ํ์ผ์ ๋ชจ๋ ๋ต๋ณ์ ๋ชจ์ ๋ค์ ์์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ๋ Makefile ๋ฐ C ํฌํจ ํ์ผ์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
์ ์คํฌ๋ฆฝํธ์ ์ฌ์ฉํ ์ ์๋ ๊ธฐํธ ์ธํธ๋ ์ ํ์ ์ด์ง๋ง ๋งค์ฐ ํฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ C ํ๋ก๊ทธ๋จ. ๊ทธ๊ฒ๋ค์ ๋ชจ๋ ์ฉ์ด์ง ํ์ผ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค. ๋น์ ์ดํด์ผ ํ ์ผ์ ๋ฐฐ์ฐ๋ ๊ฒ๋ฟ์ ๋๋ค.
์ด์ ๋ํด ์์๋ณด๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด์์ฑ ๋ฐ ๊ตฌ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ญ์์ค. ๊ทธ ๋ค์์,
์คํํ์ฌ ๋ฉํ ๊ตฌ์ฑ, ํจํค์ง์ ์ ํฉํ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
๊ตฌ์ฑ ์คํฌ๋ฆฝํธ๋ ์ฌ๋ฌ ๋จ์(300๊ฐ ์ด์)๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ๊ฐ ๋จ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์์ ์ ๋ฐ/๋๋ C ๊ธฐํธ๋ฅผ ์ ์ํ๋ ์ผ์ ๋ด๋นํฉ๋๋ค. ์ ๋์ด ์กฐ๋ฆฝ๋ฉ๋๋ค.
๋ง์ง๋ง ๋จ๊ณ์์ ํจ๊ป ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ์กด์คํฉ๋๋ค(ํ๋์ ๋จ์์๋ ๊ฒฐ๊ณผ๊ฐ ํ์ํ ์ ์์).
์คํฌ๋ฆฝํธ ์ด์ ์ ๋ฐฐ์น๋๋ ์ฌ๋ฌ ๋ค๋ฅธ ์ ๋์ ๊ฒฝ์ฐ)
๊ธฐํธ
๊ธฐํธ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋๋ค. ๋ฉํ ๊ตฌ์ฑ ์ธ๊ณ. ๊ทธ๋ค์ ๊ฐ์ฅ ์์ต๋๋ค
์ผ๋ฐ์ ์ผ๋ก ๋จ์ด๋ก ์ธ์๋๋ ์ํฐํฐ์ด๋ฉฐ ๊ตฌ์ฑ์ด ๋๋ ๋ ๊ฐ์ ๋ถ์ฌ๋ฐ์ ์ ์์ต๋๋ค.
์คํ. ์๋ฅผ ๋ค์ด C ์ ์ฒ๋ฆฌ๊ธฐ ๊ธฐํธ๋ HAS_RENAME ํ๋ ๋ฉํ ๊ตฌ์ฑ ๊ทธ ์์ง
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ ์๋๋ ๊ฒ์ด ๋ณด์ฅ๋ฉ๋๋ค. ์ด๋ฆ ๋ฐ๊พธ๊ธฐ () ์์คํ ํธ์ถ์ด ์กด์ฌํฉ๋๋ค. ๋น์ทํ๊ฒ,
์ ์, $ranlib ์ ๋ณ์๋ ':' ๋๋ 'ranlib'๋ก ์ค์ ๋ฉ๋๋ค.
์ ์ ํ ๋๋ฆฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ ์ฃผ๋ฌธํ๋ ค๋ฉด ํ๋ก๊ทธ๋จ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง๋ ์๋๋๋ค.
์ง๊ธ์ผ๋ก์๋ ์ค์ํ ๊ฒ์ ์ด๋ฌํ ๊ธฐํธ์ ์ํ
(์ฆ, ๊ฐ) ๊ตฌ์ฑ ์คํ.
๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค. C ์์ค ํ์ผ์์๋ ๊ฐ๋จํ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ ์ง์์ด๋ก ๊ฐ(์: #ifdef HAS_RENAME) ๋๋ ๊ธฐํธ๊ฐ ์๋ ๊ฒฝ์ฐ
value๋ C์์ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฌธ์์ด์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํ์ผ์ด๋
Makefile์์๋ ์ ๊ธฐํธ๋ฅผ ์ง์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
์ฌ์ค, ๊ฑฐ์ง๋ง์ ํ๊ณ ์์ต๋๋ค. ์ด์ ๋จ๋ฝ๋งํผ ์์ ํ ๋ง์ ์ ์ด์ง๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฆฌ๊ฐ ๋ ์ ์์์ต๋๋ค. C ํ์ผ์๋ ๊ตฌ์ฑ ์์ฑ์ ํฌํจํด์ผ ํฉ๋๋ค. ๊ตฌ์ฑ.h ํ์ผ, ๊ทธ๋ฆฌ๊ณ
์ ์คํฌ๋ฆฝํธ๋ Makefile์ .SH ํ์ผ๋ก ๋ํํด์ผ ํ๋ฉฐ ์์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
ํด๋น .SH ํ์ผ์ ๋ณ์ ๋์ฒด ๋ถ๋ถ์๋ง ๊ธฐํธ๊ฐ ์์ต๋๋ค. ์ด์ ๋ํด์๋ ๋์ค์ ์์ธํ ์ค๋ช ํฉ๋๋ค.
์ถ์ฒ ํ์ผ
๊ธฐํธ๋ ์ ํ๋ ์์ค ํ์ผ ์ธํธ์๋ง ๋ํ๋ ์ ์์ต๋๋ค. ๋ฉํ ๊ตฌ์ฑ ~ ๋ง
์๋ ค์ง ๊ธฐํธ๋ฅผ ์ฐพ์ ๋ ์ด๋ฅผ ์ค์บํ์ฌ ํ์ํ ๋จ์๋ฅผ ์์๋ด์ญ์์ค.
C ์์ค ํ์ผ, ์ฆ .c, .h, .y or .l ํ์ฅ ๋ฐ
์ ๊ธฐํธ๋ .SH ํ์ผ์์๋ง ๊ฒ์๋ฉ๋๋ค.
๊ธฐํธ์ ๊ฐ์ ์ป์ผ๋ ค๋ฉด C ํ์ผ์ ํน์ ๋ฌธ์๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๊ตฌ์ฑ.h
์ ์ํด ์์ฑ๋๋ ํ์ผ ๊ตฌ์ฑ C ๊ธฐํธ๊ฐ ์์ ๋. ๊ทธ๋ฆฌ๊ณ .SH ํ์ผ์ด ์คํ๋ฉ๋๋ค.
์์ ํตํด ์ ํ์ผ์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฌ๋ .SH ํ์ผ์ ์๋จ ์น์ ์๋
ํน๋ณํ config.sh ํ์ผ(๋ํ ๋ค์์ ์คํํ์ฌ ์์ฑ๋จ) ๊ตฌ์ฑ)๋ ์์ค์ด๋ฉฐ ๊ฐ๋ณ์ ์ ๋๋ค.
๋์ฒด๊ฐ ์ ์ฉ๋ฉ๋๋ค. ์ค์ ๋ก, ๊ตฌ์ฑ.h ์ ์คํํ์ฌ ์์ฐ๋ฉ๋๋ค. ๋ฉํ ๊ตฌ์ฑ์์ฐ
๊ตฌ์ฑ_h.SH ํ์ผ์์ ๋ค์ ๋ณ์ ๋์ฒด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค
์ด๊ฒ์ด ์ ์ฒด์ ํต์ฌ์ด๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ ์์ธํ ๊ตฌ์ฑ ๊ณํ...
๋ณํ๊ธฐ ์ฌ์ด ์นํ
๋ผ๋ ์ ๊ตฌ์กฐ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ง๊ธ ํ์ธํด ๋ณด์ธ์. ๋ฌธ์ ๋ช ๋ น์ด ์ ๋ ฅ์ ๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ
์คํฌ๋ฆฝํธ ์์ฒด ๋ด์์ ์ง์ ๋ฉ๋๋ค. ํด๋น ์ ๋ ฅ์ ์์ ์ํด ์ด์ค์ผ๋ก ํด์๋ฉ๋๋ค.
here ๋ฌธ์์ ํ์์ ๋ฐ๋ผ ๋ฐ์ดํ๋ก ๋ฌถ์ธ ๋ฌธ์์ด ๋๋ ์์ ๋ฐ์ดํ๋ก ๋ฌถ์ธ ๋ฌธ์์ด
์ฌ์.
here ๋ฌธ์๋ฅผ ์ง์ ํ๋ ค๋ฉด '<<' ํ ํฐ๊ณผ ๊ทธ ๋ค์ ๋จ์ผ ์๋ณ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์์
๊ทธ๋ฐ ๋ค์ ๋๋จธ์ง ์คํฌ๋ฆฝํธ ์ค์ ์ฌ๊ธฐ๊น์ง ๋ช ๋ น์ ๋ํ ์ ๋ ฅ์ ํ์ฑํฉ๋๋ค.
๋ฌธ์๊ฐ ํ ์ค์ ๋จ๋ ์ผ๋ก ๋ฐ๊ฒฌ๋์์ต๋๋ค. ์ ๋์ฒด(์ ๋ณ์ ํฌํจ)
๋์ฒด)๋ ์๋ณ์๊ฐ ์์๋ฐ์ดํ๋ก ๋ฌถ์ด์ง ์๋ ํ ์ํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด:
var='์ฒซ๋ฒ์งธ'
tar = '๋ ๋ฒ์งธ'
echo "--> ๋จผ์ ์ฌ๊ธฐ ๋ฌธ์:"
๊ณ ์์ด <
var='$var'
ํ๋ฅด='$tar'
EOM
echo "--> ๋ ๋ฒ์งธ ๋ฌธ์:"
๊ณ ์์ด <<'์'
์์ฝ $var
์์ฝ $tar
EOM
์์ฝ "--> ๋."
์์ ํตํด ์คํ๋ ๋ ๋ค์์ด ์์ฑ๋ฉ๋๋ค.
--> ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
var='์ฒซ๋ฒ์งธ'
tar = '๋ ๋ฒ์งธ'
--> ๋ ๋ฒ์งธ ๋ฌธ์:
์์ฝ $var
์์ฝ $tar
--> ๋.
์ฒซ ๋ฒ์งธ ์ฌ๊ธฐ ๋ฌธ์์ ๋ด์ฉ์ ํด์๋ ๋ฐ๋ฉด ๋ ๋ฒ์งธ ๋ฌธ์๋ ์๋ ๊ทธ๋๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ณง ๋ณด๊ฒ ๋ ๊ฒ์ฒ๋ผ ๋ ๋ค .SH ์คํฌ๋ฆฝํธ์์ ์ ์ฉํฉ๋๋ค.
์ฌ์ฉ .์ฟ ์คํฌ๋ฆฝํธ
.SH ์คํฌ๋ฆฝํธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ์คํํ์ฌ ์์ฑ๋ฉ๋๋ค. MakeSH ๊ธฐ์กด ํ์ผ๊ณผ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ,
๋ณํ ํ์ผ ์ ํ์ผ.SH. ํ ๊ฐ์ง ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์ ์์ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค.
(์ ํํ์ intsize) ๋จ์ผ ๋ฉ์์ง๋ฅผ ์ธ์ํฉ๋๋ค. INT C์ ๋ฐ์ดํฐ ์ ํ
๋ถํํ๋ ์ฌ๊ธฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ด ๋ด์ฅ๋์ด ์์ต๋๋ค.
#!/ ๋น / SH
intsize='4'
echo "์ด ์ปดํจํฐ์์๋ int ์ ํ์ด $intsize ๋ฐ์ดํธ์ ๋๋ค."
๋ฐ์ makeSH ๊ทธ๊ฒ์ '๋ฅผ ์ ๋ ฅํ์ฌmakeSH intsize'. ์ฐ๋ฆฌ๋ ์ฑ๊ธ์ ์ป์ต๋๋ค intsize.SH ํ์ผ
๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค.
$CONFIG์ ๊ฒฝ์ฐ
'')
ํ ์คํธ -f config.sh์ธ ๊ฒฝ์ฐ; ๊ทธ๋ผ TOP=.;
elif ํ ์คํธ -f ../config.sh; ๊ทธ๋ฌ๋ฉด TOP=..;
elif ํ ์คํธ -f ../../config.sh; ๊ทธ๋ผ TOP=../ ..;
elif ํ ์คํธ -f ../../../config.sh; ๊ทธ๋ผ TOP=../../..;
elif ํ ์คํธ -f ../../../../config.sh; ๊ทธ๋ผ TOP=../../../..;
๊ทธ๋ ์ง ์์ผ๋ฉด
echo "config.sh๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค."; 1๋ฒ ์ถ๊ตฌ
fi
. $TOP/config.sh
;;
๊ทธ C
: SH ํ์ผ์ด SH ํ์ผ๊ณผ ๋์ผํ ๋๋ ํฐ๋ฆฌ์ ๋์์ ์์ฑํ๋๋ก ๊ฐ์ ํฉ๋๋ค.
: ์ด๋ make๊ฐ ํญ์ SH ํ์ ์ํ์ ์ฐพ์ ์ ์๋ ์์น๋ฅผ ์ ์ ์๋๋ก ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์ผ์ด์ค "$0"
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
๊ทธ C
echo "intsize ์ถ์ถ ์ค(๋ณ์ ๋์ฒด ํฌํจ)"
: ํ์ผ์ ์ด ์น์ ์๋ ๋ณ์ ๋์ฒด๊ฐ ์ํ๋ฉ๋๋ค.
: ๊ตฌ์ฑ ํ์๊ฐ ํ์ํ ํญ๋ชฉ์ !NO!SUBS์์ ์ด๋ํ์ธ์! ์น์ ์ !GROK!THIS!๋ก ๋ณ๊ฒฝํ์ธ์.
: ํด์์ ์ํ์ง ์๋ ๋ฌ๋ฌ ๊ธฐํธ์ ๋ฐฑํฑ์ ๋ณดํธํ์ธ์.
: ์์ ๋ฐฑ์ฌ๋์๋ฅผ ๋ฃ์ต๋๋ค. ์ด ๋๊ธ์ ์ญ์ ํ ์ ์์ต๋๋ค.
$spitshell >intsize <
$startsh
!๊ทธ๋กํฌ!์ด๊ฒ!
: ๋ค์ ๋ฌ๋ฌ์ ๋ฐฑํฑ์๋ ์ถ๊ฐ ๋ฐฑ์ฌ๋์๊ฐ ํ์ํ์ง ์์ต๋๋ค.
$spitshell >>intsize <<'!NO!SUBS!'
intsize='4'
echo "์ด ์ปดํจํฐ์์๋ int ์ ํ์ด $intsize ๋ฐ์ดํธ์ ๋๋ค."
!์๋ผ!์๋ธ์ค!
chmod 755 int ํฌ๊ธฐ
$eunicefix intsize
์ด ์คํฌ๋ฆฝํธ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ( ์ผ์ด์ค ์ง์ )์ด ํด๋น ํญ๋ชฉ์ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค. config.sh
ํ์ผ์ ์์ค๋ก ์ฌ์ฉํ๊ธฐ ์ํด. ๊ทธ๋งํผ $CONFIG ๋ณ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก false์ด๊ณ , ๋ค์ ๊ฒฝ์ฐ์๋ true์ ๋๋ค.
config.sh ์ด๋ฏธ ์์ค๊ฐ ์ ๊ณต๋์์ต๋๋ค(์ด ํ์ผ์ด ๋ค์์์ ์คํ๋ ๊ฒฝ์ฐ๊ฐ ํด๋น๋ฉ๋๋ค).
์ด๋ด ๊ตฌ์ฑ ํ์ง๋ง ์ฌ๊ธฐ์ ๋ฌธ์ ๋ฅผ ํผ๋ํ์ง ๋ง์ธ์).
ํ ๋ฒ config.sh ํ์ผ์ ์์ค์์ผ๋ฉฐ ๋ชจ๋ ์ ๊ธฐํธ๋ ๋ค์์ ์ํด ์ ์๋์์ต๋๋ค. ๊ตฌ์ฑ are
์ธํธ. ์ฐ๋ฆฌ๋ ํ์ฌ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ ๋ฒ์งธ ์ฌ๋ก ์ค๋ช ์ ๋๋ฌํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๊ฒฝ๋ก๋ ์ด ํ๋ก๊ทธ๋จ์ ๋๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค(์๋ฅผ ๋ค์ด 'sh ../scripts/intsize.SH', ์ฐ๋ฆฌ
๋จผ์ ์คํํ๊ฒ ์ต๋๋ค 'cd ../์คํฌ๋ฆฝํธ' ๊ณ์ํ๊ธฐ ์ ์). ์ด๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ค๋ฉด ํ์ง ๋ง์ธ์.
๊ทธ๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ญ์์ค.
์ฌ๊ธฐ์ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ด ์์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ $spitshell ๊ฐ๋ณ์ ์ด๋ฉฐ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๊ฒ...์์ง์์. ์ฉ์ด์ง ํ์ผ์ ์ดํด๋ณด๋ฉด,
์ด๊ฒ์ ์๋ ค์ง ๋ณ์์ ๋๋ค. ๋ฉํ ๊ตฌ์ฑ. ์ด ํ์ผ์ ๋ฐฐํฌ์ ์ผ๋ถ๋ก ๋ง๋๋ ๊ฒฝ์ฐ
(MANIFEST.new ํ์ผ์ ํฌํจ์์ผ์ ๋์ค์ ๋ค์ ์ค๋ช ํ๊ฒ ์ต๋๋ค) ์คํํฉ๋๋ค.
๋ฉํ ๊ตฌ์ฑ, ๊ทธ ๋ค์์ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ๋ ์ด ๋ณ์์ ์ ํฉํ ๊ฐ์ ๊ฒฐ์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์์ ์ค์ ๋ฉ๋๋ค config.sh. ๊ฐ์ ๊ฒฝ์ฐ $startsh ๊ทธ๋ฆฌ๊ณ ์ ๋นํ $eunicefix at
๋. ํฉ๋ฆฌ์ ์ธ ์์คํ ์์ ๊ด๋ จ ๋ถ๋ถ์ config.sh ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์ ๋๋ค.
spitshell='๊ณ ์์ด'
startsh='#!/ ๋น / SH'
์ ๋์คํฝ์ค=':'
์! ์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ๋์ฐฉํ๊ณ ์์ต๋๋ค. ์ด์ ๋ ์ต์ํด ๋ณด์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ฑ๊ธ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค ๋ฐฉ๋ฒ ๋๊ตฌ์ ๋ช ๋ น์
์ ๋ ฅ์ ๋ณ์๋ก ์ฝ์ ๋ ์ฌ๊ธฐ ๋ฌธ์์์ ๋์ค๋ฉฐ ์ถ๋ ฅ์ ๋ค์์ผ๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
intsize. ๊ทธ ๊ฐ์น๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด๋ค. $startsh, ์ฆ '#!/ ๋น / SH'. ์ง๊ธ๊น์ง๋ ๊ด์ฐฎ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์คํฌ๋ฆฝํธ์ ๋๋จธ์ง ๋ถ๋ถ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฌ๊ธฐ์์ ๋ ๋ฒ์งธ ๋ฌธ์ ํ์ฅ์ ๋๋ฌํฉ๋๋ค. ์ด๊ฒ
์๊ฐ์ด ์ง๋๋ฉด ์ฌ๊ธฐ ๋ฌธ์ ๊ธฐํธ๋ ์์๋ฐ์ดํ๋ก ๋๋ฌ์ธ์ฌ ์์ผ๋ฏ๋ก ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ๋ฌธ์ ๊ทธ๋๋ก ์ฒจ๋ถํ์ต๋๋ค. intsize ํ์ผ. ๊ทธ๋์ '๋ฅผ ์คํํ์ฌsh intsize.SH', ์ฐ๋ฆฌ๋
๋ค์ ์ถ๋ ฅ:
intsize ์ถ์ถ(๋ณ์ ๋์ฒด ์ฌ์ฉ)
์์ฑ๋ intsize ํ์ผ์ ์ดํด๋ณด๋ฉด ๋ค์์ ๋ณผ ์ ์์ต๋๋ค.
#!/ ๋น / SH
intsize='4'
echo "์ด ์ปดํจํฐ์์๋ int ์ ํ์ด $intsize ๋ฐ์ดํธ์ ๋๋ค."
์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ์ฒ์์ ๊ฐ์ก๋ ๊ฒ์ ๋๋ค. ์ง๊ธ๊น์ง๋ ๋ฌด์๋ ์ ์ฐจ์ธ๋ฐ...
๊ทธ๋ฌ๋ ์ผ๋ง๋ ๋๋ผ์ด ์ผ์ธ๊ฐ! ๊ทธ๋ฐ ์ผ์ด ์ผ์ด๋ฌ์ต๋๋ค(์์ ํ ์ฐ์ฐ์ ์ผ์น์ ๋๋ค. ์ ๋ฅผ ๋ฏฟ์ผ์ธ์!). ๋ฉํ ๊ตฌ์ฑ ์๊ณ ์๋ค
์ ๋ํ $intsize ์ ๊ธฐํธ. intsize์ ์ด๊ธฐํ๋ฅผ ๋ณ์๋ก ์ด๋ํ์ฌ
.SH ์คํฌ๋ฆฝํธ์ ๋ณด๊ฐ๋ ์์ญ์ ์ฌ์ฉํ์ฌ ์ด๊ธฐํํฉ๋๋ค. ๊ตฌ์ฑ-๊ณ์ฐ๋ ๊ฐ,
์ด์ ์ถ๊ฐ๋ ์ธ๋ชจ์๋ ๋๊ธ์ ์ ๊ฑฐํฉ๋๋ค. makeSH, ์ฐ๋ฆฌ๋ ๋ค์์ ์ป์ต๋๋ค.
$CONFIG์ ๊ฒฝ์ฐ
'')
ํ ์คํธ -f config.sh์ธ ๊ฒฝ์ฐ; ๊ทธ๋ผ TOP=.;
elif ํ ์คํธ -f ../config.sh; ๊ทธ๋ฌ๋ฉด TOP=..;
elif ํ ์คํธ -f ../../config.sh; ๊ทธ๋ผ TOP=../ ..;
elif ํ ์คํธ -f ../../../config.sh; ๊ทธ๋ผ TOP=../../..;
elif ํ ์คํธ -f ../../../../config.sh; ๊ทธ๋ผ TOP=../../../..;
๊ทธ๋ ์ง ์์ผ๋ฉด
echo "config.sh๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค."; 1๋ฒ ์ถ๊ตฌ
fi
. $TOP/config.sh
;;
๊ทธ C
์ผ์ด์ค "$0"
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
๊ทธ C
echo "intsize ์ถ์ถ ์ค(๋ณ์ ๋์ฒด ํฌํจ)"
$spitshell >intsize <
$startsh
intsize='$intsize'
!๊ทธ๋กํฌ!์ด๊ฒ!
$spitshell >>intsize <<'!NO!SUBS!'
echo "์ด ์ปดํจํฐ์์๋ int ์ ํ์ด $intsize ๋ฐ์ดํธ์ ๋๋ค."
!์๋ผ!์๋ธ์ค!
chmod 755 int ํฌ๊ธฐ
$eunicefix intsize
๋ฌผ๋ก , ์์ ํตํด ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ๋์ผํ ์คํฌ๋ฆฝํธ๊ฐ ๋ค์ ์ถ๋ ฅ๋ฉ๋๋ค. ํ์ง๋ง ๋ง์ฝ
์ฐ๋ฆฌ๋ ๋ฌ๋ฆฐ๋ค ๊ตฌ์ฑ ๊ธฐ๊ณ์์ INT 64๋นํธ ์๋์ผ๋ก ์ ์ฅ๋๋ฉฐ, config.sh ์์ง
์ธํธ intsize 8 ๋ฐ intsize ์คํฌ๋ฆฝํธ๋ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ๊ฐ๊ณ ๋ค์์ ์ธ์ํฉ๋๋ค.
์ด ๋จธ์ ์์ int ์ ํ์ 8๋ฐ์ดํธ์ ๋๋ค.
๋ง์ต๋๋ค. ์ถํํด์! ๋ฐฉ๊ธ ์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค !!
์์ฐ ๊ตฌ์ฑ.h
์ด์ ์ฐ๋ฆฌ๋ ๊ทธ ๊ธธ์ ์ดํด๋ณผ ์ ์์ต๋๋ค ๊ตฌ์ฑ.h ์์ ์์ฐ๋ฉ๋๋ค ๊ตฌ์ฑ_h.SH. ์ฐ๋ฆฌ๋ ์๊ณ
๋ฌ๋ฆฌ๋ ๊ตฌ์ฑ ์์ฐ config.sh ์คํฌ๋ฆฝํธ(์ ํํ ์ํ๋๋ ๋ฐฉ๋ฒ์ ์๊ฒฉํ
์ฌ๊ธฐ์ ๊ด๋ จ์ด ์์ง๋ง ๊ถ๊ธํ์ ๋ถ๋ค์ ์ํด ์ฌ๊ธฐ์ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋์ฒด๊ฐ ์์ต๋๋ค.
๊ตฌ์ฑ ๊ทธ ์์ฒด). ๊ทธ๋งํผ ๊ตฌ์ฑ_h.SH ๊ทธ ์์ฒด๋ ๋ค์์ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. ๋ฉํ ๊ตฌ์ฑ ๋์์
๊ตฌ์ฑ ์์ค ๋ด์์ ํ๋ ์ด์์ C ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
๋ฌด์์๋ก ์ดํด ๋ณด๊ฒ ์ต๋๋ค. ๊ตฌ์ฑ_h.SH ์ค์ ๋ก ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณด๋ ค๋ฉด ๋ค์ ํ์ผ์ ์ฌ์ฉํ์ธ์.
$CONFIG์ ๊ฒฝ์ฐ
'')
ํ ์คํธ -f config.sh์ธ ๊ฒฝ์ฐ; ๊ทธ๋ผ TOP=.;
elif ํ ์คํธ -f ../config.sh; ๊ทธ๋ฌ๋ฉด TOP=..;
elif ํ ์คํธ -f ../../config.sh; ๊ทธ๋ผ TOP=../ ..;
elif ํ ์คํธ -f ../../../config.sh; ๊ทธ๋ผ TOP=../../..;
elif ํ ์คํธ -f ../../../../config.sh; ๊ทธ๋ผ TOP=../../../..;
๊ทธ๋ ์ง ์์ผ๋ฉด
echo "config.sh๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค."; 1๋ฒ ์ถ๊ตฌ
fi
. $TOP/config.sh
;;
๊ทธ C
์ผ์ด์ค "$0"
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
๊ทธ C
echo "config.h ์ถ์ถ ์ค(๋ณ์ ๋์ฒด ํฌํจ)"
sed < config.h -e 's!^#undef!/define!' -e 's!^#un-def!#undef!'
/*
* ์ด ํ์ผ์ config_h.SH ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ์์ฑ๋์์ผ๋ฉฐ,
* ์ผ๋ฐ์ ์ผ๋ก ์์ฑ๋๋ config.sh์์ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
* ๊ตฌ์ฑ์ ์คํ ์ค์ ๋๋ค.
*
* ํ์์ ๋ฐ๋ผ ์์ ๋กญ๊ฒ ์์ ํ์๊ธฐ ๋ฐ๋๋๋ค. ๊ทธ๋ฌ๋ ์ฐธ๊ณ ํ์ธ์.
* config.h.SH๋ฅผ ๋ค์ โโ์คํํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ๋ชจ๋ ์ง์์ง๋๋ค.
* ๋ณด๋ค ์๊ตฌ์ ์ธ ๋ณ๊ฒฝ์ ์ํด์๋ config.sh๋ฅผ ํธ์งํ๊ณ config.h.SH๋ฅผ ๋ค์ โโ์คํํ์ธ์.
*/
/* ๊ตฌ์ฑ ์๊ฐ: $cf_time
* ๊ตฌ์ฑ์: $cf_by
* ๋์ ์์คํ : $myuname
*/
#ifndef _config_h_
#define_config_h_
/* ๋ณต์ฌ:
* bcopy() ๋ฃจํด์ด ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ด ๊ธฐํธ๋ memcpy์ ๋งคํ๋ฉ๋๋ค.
* ๋ฌธ์์ด ๋ณต์ฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
*/
/* HAS_BCOPY:
* ์ด ๊ธฐํธ๋ bcopy() ๋ฃจํด์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ ์๋ฉ๋๋ค.
* ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ๋ณต์ฌํฉ๋๋ค. ์๋์ ์ด ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค.
* ์ผ๋ฐ์ ์ธ ์ํฉ์์๋ ๋์ bcopy()๋ฅผ ์ง์ ์ฌ์ฉํ์ธ์.
* bcopy๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ memcpy()์ ๋งคํ๋ฉ๋๋ค.
*/
#$d_bcopy HAS_BCOPY /**/
#ifndef HAS_BCOPY
#ifdef bcopy
#un-def bcopy
#endif
#define bcopy(s,d,l) memcpy((d),(s),(l)) /* memcpy์ ๋งคํ๋จ */
#endif
/* HAS_DUP2:
* ์ด ๊ธฐํธ๊ฐ ์ ์๋ ๊ฒฝ์ฐ dup2 ๋ฃจํด์ด ๋ค์๊ณผ ๊ฐ์์ ๋ํ๋ ๋๋ค.
* ํ์ผ ์ค๋ช ์๋ฅผ ๋ณต์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
*/
#$d_dup2 HAS_DUP2 /**/
/* I_STRING:
* ์ ์๋ ๊ฒฝ์ฐ ์ด ๊ธฐํธ๋ C ํ๋ก๊ทธ๋จ์ ๋ค์์ ์ํํด์ผ ํจ์ ๋ํ๋ ๋๋ค.
* ํฌํจํ๋ค (USG ์์คํ ) ๋์ (BSD ์์คํ ).
*/
#$i_string I_STRING /**/
#endif
!๊ทธ๋กํฌ!์ด๊ฒ!
ํ์ผ ์๋จ์์ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ํ์ค .SH ๊ตฌ์ฑ์ ์ธ์ํฉ๋๋ค.
์์ธํ ๊ณต๋ถํ์ต๋๋ค. ๋ค์์ ์ฌ๊ธฐ ๋ฌธ์๋ฅผ ํตํด ํ์ผ ์์ฒด๋ฅผ ์ถ์ถํ๋ ๊ฒ์ ๋๋ค.
๋ณ์ ๋์ฒด. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์๋ ์ผ๋ฐ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ฐฉ๋ฒ ๊ทธ๋ฌ๋ SED ๋์ , ์ดํ
์ฆ์์์ ์ถ๊ฐ ํธ์ง์ ์ํํด์ผ ํฉ๋๋ค. ์ด์ ๋ ๋์ค์ ์์๋ณด๊ฒ ์ต๋๋ค. ์์ด๋ฒ๋ฆฌ์ธ์.
์ง๊ธ ๋น์ฅ ๊ทธ๊ฒ์ ๋ํด.
์ด์ ์ฒซ ๋ฒ์งธ ์ฃผ์์ ๋๋ฌํ์ผ๋ฉฐ ํ์ผ์ ๊ตฌ์ฑ ์๊ฐ ํ๊ทธ๊ฐ ์ง์ ๋์์ต๋๋ค.
๋์ ์์คํ ๋ฑ... (์์ค์์ ์ค๋ ๋ณ์ config.sh ํ์ผ์ด๋์์ต๋๋ค
์ ์ํด ์ค์ ๊ตฌ์ฑ). ํด๋น ์ฃผ์ ํค๋ ๋ค์๋ ๋ณดํธ๋ฅผ ์ํ '#ifndef' ๋ณดํธ๊ฐ ์ต๋๋ค.
์ด ํ์ผ์ด ์ฌ๋ฌ ๊ฐ ํฌํจ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์ผ์ ํต์ฌ์ด ๋์ต๋๋ค.
๊ทธ๊ฒ์ ์๋ ๊ฒ์ด ๋์์ด ๋๋ค $d_* ๊ณผ $i_* ๋ณ์๋ '๋ฐํ๋ค'๋๋'์ธ๋ฐํ' ์ ์ํด
๊ตฌ์ฑ, ๊ธฐ๋ฅ์ด๋ ํฌํจ ํ์ผ์ด ์์คํ ์ ์กด์ฌํ๋์ง ๋๋
์๋๋ค. ์ด๋ ๋ค์์ ์๋ฏธํฉ๋๋ค.
#$d_bcopy HAS_BCOPY /**/
์ค์ ๋ค์ ์ค ํ๋๋ก ํ์ฅ๋ฉ๋๋ค.
#define HAS_BCOPY /**/
$d_bcopy ๋ณ์๊ฐ 'define'์ผ๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๋๋:
#undef HAS_BCOPY /**/
$d_bcopy๊ฐ 'undef'๋ก ์ค์ ๋ ๊ฒฝ์ฐ ํด๋น ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ ๋ฌด์์ด ์ฐ์ฌ์ง๋์? ๊ตฌ์ฑ.h ํ์ผ ๋๋ฌธ์ SED ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ณธ ํํฐ,
๋ ๋ฒ์งธ ํ์์ ๋ค์๊ณผ ๊ฐ์ด ๋ณํ๋ฉ๋๋ค.
/*#define HAS_BCOPY /**/
๋์ค์ ํธ์งํ ๋ ํธ๋ฆฌํ ์์์ ๋๋ค. ๊ตฌ์ฑ.h ์ ๊ฑฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์
์ฌ์ ์ํ๋ ค๋ฉด ์์ '/*'๋ฅผ ์ ๋ ฅํ์ธ์. ๊ตฌ์ฑ๋์ ์ ํ์ ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋จ์ผ์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
ํน์ ๊ธฐํธ์ ์ ์๋ฅผ ํผํ๊ธฐ ์ํด '#define' ์ค ์์ ๋ถ๋ถ์ '/*'๋ฅผ ๋ถ์ ๋๋ค.
์ด๊ฒ์ด ๊ฐ ๊ธฐํธ ์ ์๊ฐ ํํ '/**/'๋ก ๋ณดํธ๋์ด ์ ํ ๊ธฐํธ๋ฅผ ๋ซ๋ ์ด์ ์ ๋๋ค.
'/*'๋ก ์ด๋ฆฐ ์ฃผ์์ ๋๋ค(์ฃผ์์ C์ ์ค์ฒฉ๋์ง ์์ต๋๋ค).
์ด์ '#undef'๋ฅผ '/*#define'์ผ๋ก ๋ณํํ๋ ๊ฒ์ด ์ข์ง๋ง ์ค์ ๋ก
'#undef', ์ฐ๋ฆฌ๋ ๊ผผ์ง ๋ชปํ๊ฒ ๋ฉ๋๋ค... '#un-def'๋ก ์์ฑํ๊ณ ๊ทธ๋๋ก ๋์ง ์์ผ๋ฉด SED ์ด๋ฅผ '#undef'๋ก ์์ ํ์ธ์.
์์ฐํ๋ ๋์ ๊ตฌ์ฑ.h, ์ด๊ฒ์ด ์ค์ ๋ก ์ฌ๊ธฐ์ ์ํ๋๋ ์์ ์ ๋๋ค.
๋์ผํ ์ข ๋ฅ์ ์ถ๋ก ์ด ํด๋น ๋ ์ค์ ์ ์ฉ๋ฉ๋๋ค.
#$d_dup2 HAS_DUP2 /**/
#$i_string I_STRING /**/
๊ทธ๋ฆฌ๊ณ ๊ฐ์ config.sh ์ ์:
d_dup2='์ ์'
i_string='undef'
์ฐ๋ฆฌ๋ ์์ฐ์ ๋ค์ด๊ฐ ๊ฒ์ด๋ค ๊ตฌ์ฑ.h:
#HAS_DUP2 ์ ์ /**/
/*#define I_STRING /**/
ํ๋ฅด๋ ๋ฌผ์ฒ๋ผ ๋ง์์? ์ข์!
์ด์ ๋ค์์ ํฌํจํ๋ฉด ๋ค์์ด ๋ถ๋ช ํด์ง๋๋ค. ๊ตฌ์ฑ.h ๋ชจ๋ C ์์ค ํ์ผ์์
๋ฌด์์ ์๊ณ ๊ตฌ์ฑ ๊ทํ์ ์์คํ ์์ ์ถ์ธกํ์ต๋๋ค. ์ค์ ๋ก ํด๋น ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด
๊ตฌ์ฑ๋ C ์ฝ๋ ์์ฑ, ์ดํ ๋ฉํ ๊ตฌ์ฑ ๋น์ ์๊ฒ ๊ทธ ๊ธฐํธ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ ํฉํ ์์ฑ ๊ตฌ์ฑ_h.SH ํ์ผ๊ณผ ํ์ํ ๋ชจ๋ ์ฝ๋๋ฅผ ๊ตฌ์ฑ ์
(๊ด๋ จ ์ ๋ณ์์ ๊ฐ์ ํ ๋นํ์ฌ) ์ ์ ํ ๊ฐ์ ๊ณ์ฐํฉ๋๋ค.
๋ฌ๋ฆฌ๋ ๋ฉํ ๊ตฌ์ฑ
์ ์ง์คํ์ ๋ฉํ ๊ตฌ์ฑ ํ๋ก๊ทธ๋จ์ด ๋จ์๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ดํดํ๊ธฐ ์ํด ์ ์ ๋์
ํ์ํ ๋ชจ๋ ๊ตฌ์ฑ ํ์ผ์ ์์ฑํ๋ ค๋ฉด ์์ค ์ฝ๋๋ฅผ ์ฌ์ฉํ์ธ์. ์๋ก ์ฐ์ค ์๊ฐ์ด๋ผ๋ฉด
๋จ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ ์ฒด ๊ณํ์ ์ ์ดํดํด์ผ ํฉ๋๋ค.
MANIFEST.new ํ์ผ์ด ์๋ ๊ฒฝ์ฐ, ๋ฉํ ๊ตฌ์ฑ ๋์ MANIFEST ํ์ผ์ ์ฌ์ฉํ๋ ค๊ณ ์๋ํฉ๋๋ค.
ํธ์์. MANIFEST.new๋ฅผ ์ธ๊ธํ๋ ๋ชจ๋ ๊ณณ์์๋ MANIFEST๋ก ์ดํด๋ ์ ์์ต๋๋ค.
ํจํค์ง ๋ฃจํธ์ MANIFEST.new ํ์ผ์ด ์๋ ๊ฒฝ์ฐ.
MANIFEST.new ํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ด ์๊ณ ์ํ๋ ๋ชจ๋ ์์ค ํ์ผ์ด ๋์ด๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๊ตฌ์ฑํ๊ณ ์คํํ์ต๋๋ค. ํจํท ๋ฃจํธ ์์ค ๋๋ ํฐ๋ฆฌ์
ํจํค์ง ํ์ผ, ๋น์ ์ ์คํํ ์ ์์ต๋๋ค ๋ฉํ ๊ตฌ์ฑ ๊ทธ๋ฌ๋ฉด ๋ค์์ ์ป๊ฒ ๋ฉ๋๋ค:
$ ๋ฉํ ๊ตฌ์ฑ
์ฅ์น๋ฅผ ์ฐพ๋ ์ค...
312๊ฐ ๋จ์์์ ์ข ์์ฑ ๋ชฉ๋ก์ ์ถ์ถํ๋ ์ค...
MANIFEST.new์์ ํ์ผ ์ด๋ฆ(*.[chyl] ๋ฐ *.SH) ์ถ์ถ ์ค...
์ํ๋ ํ์ผ์ ๋ง๋๋ ์ค...
.[chyl] ํ์ผ์์ ๊ธฐํธ๋ฅผ ๊ฒ์ํ๋ ์ค...
.SH ํ์ผ์์ ๊ธฐํธ๋ฅผ ๊ฒ์ํ๋ ์ค...
์ต์ ์ ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ๊ณ์ฐํ๋ ์ค...
๋น๊ณต๊ฐ make ํ์ผ์ ๋ง๋๋ ์ค...
๋ก๋ ๊ฐ๋ฅํ ๋จ์ ๊ฒฐ์ ์ค...
make ํ์ผ์ ์ ๋ฐ์ดํธํ๋ ์ค...
๋จ์์ ์ฌ๋ฐ๋ฅธ ์์๋ฅผ ๊ฒฐ์ ํ๋ ์ค...
๊ตฌ์ฑ ์์ฑ ์ค...
๋ง๋ค๊ธฐ
์ฒซ ๋ฒ์งธ ๋จ๊ณ์์๋ ๊ณต์ฉ ๋๋ ํฐ๋ฆฌ์์ ๋ชจ๋ ๋จ์ ํ์ผ(.U๋ก ๋๋จ)์ ์ฐพ์ต๋๋ค.
๋จผ์ , ๊ทธ ๋ค์์๋ ๊ฐ์ธ์ฉ์ผ๋ก. ๋น๊ณต๊ฐ U ๋๋ ํฐ๋ฆฌ์ ๊ณต๊ฐ ํ์ผ์ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ
(์ฆ, ํจํค์ง์ ์ต์์ ์์ค์ ์๋ U๋ผ๋ ๋๋ ํฐ๋ฆฌ) ๊ณต๊ฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ ์ํฉ๋๋ค.
๋ฒ์ . ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋จ์ ๋ชฉ๋ก์ด ์์ผ๋ฉด ์ด๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ๋ชจ๋ ๋จ์๋ฅผ ์ถ์ถํฉ๋๋ค.
?MAKE: ๋ผ์ธ์ ์ข ์์ฑ๊ณผ ์๋ ค์ง ์ ๊ธฐํธ์ ๋ํด ์๋ ค์ค๋๋ค. ๋ํ
?H: ๋ผ์ธ์ ์ด์ ์ ๋ง์ถฐ C ๊ธฐํธ์ ์ด๋ค ์ ๊ธฐํธ๊ฐ ์์ด์ผ ํ๋์ง ์์๋ด ๋๋ค.
ํด๋น C ๊ธฐํธ์ ๋ํ ์ ์ ํ ๊ฐ์ ์ป๊ธฐ ์ํด ๊ณ์ฐ๋ฉ๋๋ค(๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ ๋ค๋ฅธ ์์ค์ ์ข ์์ฑ์ ๊ฐ์ต๋๋ค).
์ด๋ฆฌ).
๋ค์์ผ๋ก MANIFEST.new ํ์ผ์์ ์ ์ ํ ํ์ผ ์ด๋ฆ์ด ์ถ์ถ๋๊ณ ๊ตฌํจ ํ์ผ์
build: ํด๋น ํ์ผ์๋ ํด๋น ํจํค์ง์ ํ์ํ ๋ชจ๋ C ๊ธฐํธ์ ์ ธ ๊ธฐํธ๊ฐ ๋์ด๋์ด ์์ต๋๋ค. ์ฐ๋ฆฌ
๋จผ์ C ๊ธฐํธ์ ๋ํ C ์ ํ ํ์ผ์ ๊ฒ์ํ ๋ค์ ํด๋น ํ์ผ์ ์ข ์์ฑ์ ์ ํํฉ๋๋ค.
๊ด๋ จ ์ ๊ธฐํธ(?H: ํ์์ ์์ง). ๋ค์ .SH ํ์ผ์ด ์ค์บ๋๊ณ ๋ง์ง๋ง์ผ๋ก
๋ชจ๋ ์ ๊ธฐํธ๊ฐ ์๋ ค์ ธ ์์ต๋๋ค.
์์ Makefile์ด ๋น๋๋๊ณ Metaconfig๊ฐ ๋ค์์ ์๋ํฉ๋๋ค. ํ์ธ ๋ณผ ์ ์๋ ๋ชจ๋ ์ ๊ธฐํธ
์ด๋ค ๋ช ๋ น(๋ ๋ฒ์งธ ?MAKE: ์ค์ ๋์ด๋จ)์ด ์คํ๋๊ณ , ๋ฐ๋ผ์ ์ด๋ค ์ฅ์น๊ฐ ์คํ๋ฉ๋๊น?
์ ๋ง ํ์ํด์. ๋ฌ๋ฆฌ ํ์ํ์ง ์์ ์ ํ์ ๋จ์๋ ์ ๊ฑฐ๋๊ณ ๋ ๋ฒ์งธ Makefile์
์์ฑ๋์์ต๋๋ค. ์ด๋ฒ์๋ ๋ชจ๋ ๋จ์์ ํด๋น ์ฃผ๋ฌธ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ ๊ฑฐ๋ ๋จ์์ ํด๋น ์ ๊ธฐํธ์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ด ๊ณ์ฐ๋์์ต๋๋ค. ๊ทธ๋งํผ
๊ตฌ์ฑ ๊ทธ๋ฐ ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ_h.SH. ์ด์ ๋๋ฌ์ต๋๋ค.
ํ์ฝ
์ ์ฒด ํ๋ก์ธ์ค๋ฅผ ๊ฑด์ ํ๊ฒ ๋ง๋ค๋ ค๋ฉด ์ ์ ํ ๊ท์น์ ๋ฐ๋ผ์ผ ํฉ๋๋ค. ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค
๋จ์ ๊ท์น ๋ฐ ๋ณ์ ๋ช ๋ช ๊ท์น.
๋ชจ๋ ๋จ์๋ ํน๋ณํ ๋จ์๊ฐ ์๋ ํ ์ฒซ ๊ธ์๋ฅผ ์๋ฌธ์๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ ์ํด
ํน๋ณํ๋ค๋ ๊ฒ์ ๊ทธ๋ค์ด ์ค์ ๋ก ์ฌ์ฉํ ์ ์๋ ์๋ก์ด ์ ๋ณ์๋ฅผ ์ ์ํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์์ ์ .SH ํ์ผ์ ์๋ ์ฌ์ฉ์๊ฐ ์๋๋ผ ์คํฌ๋ฆฝํธ๋ ์ ๋ณ์๋ฅผ ์์ฑํ๋ ๋จ์์ ๋๋ค.
๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ. ์ ํ์ ์ธ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค ์ด๋ํธ์ ํ์ผ์
์ฃผ์ ๋ณ์ ์ด๊ธฐํ, ๋๋ ๋ง์ด๋ฆฌ๋.์ ์ด๋ ๋ด ์ฑ ๊ฑฐ์ ์ฌ์ฉ๋๋ ์คํฌ๋ฆฝํธ
์ด๋์๋ ๊ตฌ์ฑ ์ฌ์ฉ์์๊ฒ ์ง๋ฌธ์ ํ ๋.
๋นํน์ ๋จ์๋ ๋ ๊ฐ์ ๊ฐ๋ณ ๊ทธ๋ฃน์ผ๋ก ์ธ๋ถํ๋ฉ๋๋ค. ์ฆ, ๋ณ์๋ฅผ ์ ์ํ๋ ๋จ์์ ๋๋ค.
์์ฒด ์ ๋ณ์๋ฅผ ์ ์ํ๋ C ๊ธฐํธ ๋ฐ ๋จ์์ ์ฐ๊ด๋์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๊ทธ๋ฃน
ํฌํจ ํ์ผ๊ณผ ๊ด๋ จ๋ ๋ณ์๋ก ๋ ๋๋ฉ๋๋ค(์ด๋ฆ์ i_) and
๋ค๋ฅธ ์ ์์ ๊ด๋ จ๋ ๋ณ์(์ด๋ฆ์ d_). ๋ ๋ฒ์งธ ๊ทธ๋ฃน์
์๋ฅผ ๋ค์ด, ๊ทธ ์์ฒด๋ฅผ ๋ํ๋ด๋ ์ด๋ฆ cc.U ์ ์ $cc ๊ฐ์ด ๋ค์๊ณผ ๊ฐ์ ์ ๋ณ์
์ฌ์ฉํ C ์ปดํ์ผ๋ฌ.
ํน์ ์ ๋์ ๋๋๋ก ๋ฏธ๋ฆฌ ์ ์๋ ๋ณ์๋ฅผ ์์ฝํ๊ณ "๊ฒฐ๊ณผ"๋ฅผ ๋ฐํํฉ๋๋ค.
๋ค๋ฅธ ์ ์๋ ค์ง ๋ณ์์์. ์๋ฅผ ๋ค์ด, ๋ด ์ฑ Myread.U์์ ์ ์ํ ์คํฌ๋ฆฝํธ
ํ๋กฌํํธ๋ฅผ ๊ธฐ๋ํฉ๋๋ค $rp, ๊ธฐ๋ณธ ๋ต๋ณ์ $dflt ์ฌ์ฉ์ ๋ต๋ณ์ $ans.
์ด๋ ์ด ๋งค๋ด์ผ ํ์ด์ง์ ๋ฌธ์ํ๋์ด ์์ง ์์ต๋๋ค. ์ง์ ๊ฐ์ ์ฅ์น ์์ฒด๋ฅผ ์ดํด๋ณด์์ผ ํฉ๋๋ค.
์ด๋ค ๋ณ์๊ฐ ์ฌ์ฉ๋๋์ง, ๋จ์๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ดํดํฉ๋๋ค.
์ฌ์ฉ XNUMXD๋ดํ์ ์ฉ์ด์ฌ์
์ฉ์ด์ง ํ์ผ์ ๋ค์์ ์ํด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค. ๋ฉ์ดํฌ๊ธ๋ก์ค ์ถ์ถํ๋ ์คํฌ๋ฆฝํธ
?S:, ?C: ๋ฐ ?MAKE: ํ์ ์ ๋ณด๋ฅผ ์ํ๋ฒณ์์ผ๋ก ๋ค์ ํฌ๋งทํฉ๋๋ค.
์ ๋ ฌ๋ ์ฉ์ด์ง. ์์ ์ด ์ํ ๊ธฐํธ์ ๋ํด ์๊ธฐ ์ํด ์ฉ์ด์ง์ ์ฝ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ฌ์ฉ์ด ํ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฉ์ด์ง์์๋ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ง ์์ต๋๋ค. ๋ณดํต์ ๊ทธ๋ ์ฃ
๋น์ ์๊ฒ ๋ฌ๋ ธ์ต๋๋ค.
์ธ์ ๊ฐ ๋น์ ์ ์๋ง๋ ์์ ๋ง์ ๋จ์๋ฅผ ์์ฑํ๊ฒ ๋ ๊ฒ์ด๊ณ , ๋ค์์ ๋ํด ์ถฉ๋ถํ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ๋ฉํ ๊ตฌ์ฑ
์ ์ํ๊ณ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ ๋ด์ฉ์ ์ ์ ํ๊ฒ ๋ฌธ์ํํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.
?S: ๋ฐ ?C: ์ค์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ์ด๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ๋ํด ๊ธฐ์ตํ์ธ์
์ฒ์์๋ ์ฉ์ด์ง๊ณผ ์ด ๋งค๋ด์ผ ํ์ด์ง๋ง ์์ผ๋ฉด ์์ํ ์ ์์์ต๋๋ค.
๊ฒฐ๋ก
์ด์ ๋น์ ์ ๋ฉํ ๊ตฌ์ฑ ๊ธฐ๋ณธ ์ฌํญ์ ์ฝ์ด์ผ ํฉ๋๋ค. ๊ธฐ์ ์น์ , ๋ค์
๊ฑด๋๋ฐ๊ธฐ ๋ช ์ ํ์ฉ๋๋ ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ ๋ํด ์์๋ณด๋ ์น์
๋จ์ ์ ์ด ๋ผ์ธ('?'๋ก ์์ํ๋ ๋ผ์ธ) ๋๋ ๋ณ๋์ MAKE ๋ช ๋ น์ ๋ํ ๊ตฌ๋ฌธ
๋น์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ช ์
์ด ์น์ ์์๋ ๋ด๋ถ ๋ด์ฉ์ ๋ฌธ์ํํฉ๋๋ค. ๋ฉํ ๊ตฌ์ฑ, ๊ธฐ๋ณธ์ ์ผ๋ก ๋จ์ ๊ตฌ๋ฌธ, ํน์
์์์ผ ํ ๋จ์์ ํํธ ํ์ผ.
์ผ๋ฐ ๋จ์ ํต์ฌ๋ก
๋ฉํ ๊ตฌ์ฑ ๋จ์๋ ๋ ๊ฐ์ ๊ฐ๋ณ ๋ถ๋ถ์ผ๋ก ๋๋ฉ๋๋ค. ํค๋ ์น์ (์์ํ๋ ์ค
'?' ํฌํจ) ๋ฐ ์ ์น์ ( ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ). ๊ทธ๊ฒ์
์ ๋ ๋ด์ ์ด๋ ๊ณณ์๋ '?X:' ์ฃผ์์ ์ถ๊ฐํ ์ ์์ง๋ง ๋ค๋ฅธ '?' ๋ผ์ธ(๋ํ
๋ผ๋ ์ ์ด ๋ผ์ธ) ์๊ฒฉํ ์ฃผ๋ฌธ ์ ์ฑ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ ์ด์ ์ด ๋๋ฌด ๊ธธ๋ฉด ์ต์ข ์ ํ์ถํ์ฌ ์ฐ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐฑ์ฌ๋์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ์ค๋ก ๊ณ์๋๋ ์ ์ค(๊ทธ ๋ค์ ๋ค์ฌ์ฐ๊ธฐํด์ผ ํจ)
๊ณต๋ฐฑ์ด๋ ํญ์ผ๋ก).
๋ค์์ ๊ฐ ์ ์ด ๋ผ์ธ์ ๋ํ ๊ณต์์ ์ธ ์ค๋ช ์ ๋๋ค. ๋ช ์๋์ง ์๋ ํ
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ด ํ๋ ์ ํ ์ด์ ์ ์์๋ ๋จ์ ๋ด์์ ์ฌ์ฉ๋๋ ์์์ ๋๋ค.
?RCS: ๋น์ด ์๋ ๋ณธ๋ฌธ
์ ๋ ์๋จ์ RCS ๋๊ธ์ ์ฌ์ฉ๋ฉ๋๋ค.
?์์ค: ์ด๋ค ๋ณธ๋ฌธ
๋ฒ์ฉ ์ฃผ์. ๋จ์์ ์ด๋ ์์น์๋ ๋ํ๋ ์ ์์ง๋ง ์ผ์ชฝ ์ ๋ ฌ์ด ํ์ํฉ๋๋ค.
RCS ์๊ฒฌ์ ๊ฒฝ์ฐ ?RCS: ์๊ฒฌ ์์์ ์ฌ์ฉํ์ธ์.
?๋ง๋ค๋ค:์์ง ๋ช ๋ถ: ์์กด ๋ช ๋ถ [+์ ํ์ฌํญ]
์ด๊ฒ์ด ์ฒซ ๋ฒ์งธ ์ข ์์ฑ ๋ผ์ธ์ ๋๋ค. ์ฒซ๋ฒ์งธ ์์ง ๋ช ๋ถ ๋ชจ๋ ๊ธฐํธ๋ฅผ ๋์ดํด์ผ ํฉ๋๋ค.
์ด ์ฅ์น์ ์ํด ์์ฑ๋ฉ๋๋ค(์ฆ, ๊ทธ ๊ฐ์ ์ฅ์น์ ์ ์น์ ์ ์ํด ๊ณ์ฐ๋ฉ๋๋ค).
๊ธฐํธ๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด์ผ ํฉ๋๋ค. ์ ์๋ ๊ธฐํธ๊ฐ ๋ด๋ถ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
์์ฑ๋ ํญ๋ชฉ์ ํ์๋์ด์๋ ์ ๋ฉ๋๋ค. config.sh ํ์ผ ์์๋ ๋ค์์ด ์์ผ ํฉ๋๋ค.
'+'(์ดํ์ ์ ์๋๋ ์ ํ์ ์ข ์์ฑ๊ณผ ํผ๋ํ์ง ๋ง์ธ์). ๋๋ฒ์งธ
๋ชฉ๋ก์ ์ผ๋ถ(๊ฐ์ด๋ฐ ':' ๋ค)๋ ๋จ์ ์ข ์์ฑ์ ๋๋ค. ๋ชจ๋ ๋์ด๋์ด์ผํฉ๋๋ค
ํ์ํ ํน์ ๋จ์์ ์์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๊ธฐํธ
๊ตฌํ. ๊ธฐํธ๊ฐ ์ถ๊ฐ๋์์ง๋ง ํด๋น ๊ตฌ์ฑ ๊ฐ์ด ์ค์ํ์ง ์์ ๊ฒฝ์ฐ
์์ '+'๊ฐ ์ฌ ์ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ ์กฐ๊ฑด๋ถ ์ข ์์ฑ์ด๋ผ๊ณ ํฉ๋๋ค.
ํด๋น ์ฅ์น๋ ํด๋น ๊ธฐํธ๊ฐ ์ค์ ๋ก ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ง ๋ก๋๋ฉ๋๋ค.
์ํจ; ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
?๋ง๋ค๋ค:ํญ ๋ช ๋ น
์ด๊ธฐ ์ข ์์ฑ ์ค ๋ค์ ํ๋ ์ด์์ ๋ช ๋ น์ค์ด ์์ ์ ์์ต๋๋ค. ์ ๊ฒ๋ค
์ฅ์น๊ฐ ๋ช ๋ น์ ๋ก๋ํ๋ ค๊ณ ํ ๋ ๋ช ๋ น์ด ์คํ๋ฉ๋๋ค. ๊ตฌ์ฑ. ์ฐธ์กฐ
์์ธํ ๋ด์ฉ์ make ๋ช ๋ น์ ๋ํ ๋จ๋ฝ์ ์ฐธ์กฐํ์ธ์. ์ฐธ๊ณ ๋ก ์ ๋ ํญ
์์ ๋ฌธ์๊ฐ ํ์ํฉ๋๋ค. ๋ช ๋ น.
?์์ด:๋ ์ด์์
์ด ์ ๋์ ๋ํ ๋ ์ด์์ ์ง์์ด๋ฅผ ์ ์ธํ์ธ์. ํด๋น ์ง์์ด๋ ๋ฌธ์์ด ์ค ํ๋์ผ ์ ์์ต๋๋ค.
์๋จ, ๋ํดํธ ๊ฐ or ๋ฐ๋ฅ (๋์๋ฌธ์๋ ์ค์ํ์ง ์์ต๋๋ค. ์ฒ ์๋ก ํ๊ธฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ฌธ์). ์๋ตํ๋ ๊ฒฝ์ฐ, ๋ํดํธ ๊ฐ ๊ฐ์ ํฉ๋๋ค.
์ด ์ง์๋ฌธ์ ์ฅ์น๋ฅผ ์๋จ์ด๋ ํ๋จ์ ๊ฐ์ ๋ก ์ ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์๋ง ํ์ํฉ๋๋ค.
์์ฑ๋ ๊ตฌ์ฑ ๋จ์ ์ข ์์ฑ์ด ํ์ฉํ๋ ๋๋ก ์คํฌ๋ฆฝํธ์ ๋๋ค. ์ค์ํ
๋ฐ๋ผ์ ์ฒ์์๋ ์ง๋ฌธ์ด ๊ฐ์๋ ์ ์์ต๋๋ค. ๋์ผํ ๋ ์ด์์ ํด๋์ค ๋ด์์ ๋จ์
d_* ๋ฐ i_* ๋จ์์ ๋ํ ๋ ๊ฐ์ง ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
๊ฐ๊ฐ ํด๋น ํด๋์ค์ ์ต์์ ๋ฐ ์ตํ์์ ์์นํฉ๋๋ค(๊ทธ๋ฌ๋ ์ด๋ค์ ํด๋น ํด๋์ค์ ์ํด์ผ ํฉ๋๋ค).
๊ธฐ๋ณธ ํด๋์ค).
๋ค๋ฅธ ๋ชจ๋ ์ฅ์น๊ฐ ์ข ์์ฑ์ ์๊ตฌํ๋ ์ฅ์น๋ฅผ ๋งจ ์์ ๊ฐ์ ๋ก ์ค์นํ๋ ๊ฒฝ์ฐ
๊ทธ ์ ์๋ ํฅ๋ฏธ๋ก์ด ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํด๋น ์ง์๋ฌธ์ ์ค์ ๋ก
๋ค์์ ์์กดํ์ง ์๋ ์ผ๋ถ ๋ํํ ๋จ์์ ์ฐ์ ์์๋ฅผ ๋์ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฒฝ๋ก ๊ด๋ จ ์ง๋ฌธ๊ณผ ๊ฐ์ด ์ฌ์ฉ์์๊ฒ ํ์๋๋ ๊ธฐํ ๊ธฐํธ์ ๋๋ค.
?์์ค:๊ธฐํธ_์ด๋ฆ [(์๋์ ๋ค ๋จ์ด์ง ์์ง ๋ช ๋ถ)]:
์ ๊ธฐํธ๋ฅผ ์๊ฐํฉ๋๋ค. ์ด ์ฒซ ๋ฒ์งธ ์ค์ ๊ธฐํธ์ ์ด๋ฆ์ ์ง์ ํ๊ณ ์ ํ์ ์ผ๋ก ๋ค์ ๊ธฐํธ๊ฐ ๋ถ์ต๋๋ค.
๊ดํธ ์์ ๋ชฉ๋ก์ ๋ฃ๊ณ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ํด๋น ํญ๋ชฉ์ ์ ๊ณตํฉ๋๋ค. ์ธ๋ชจ์๋ ๊ฒ๋ค
๊ธฐํธ๋ ์ ๊ธฐํธ๋ก ๋ค์ ๋งคํ๋ฉ๋๋ค. ๊ธฐํธ_์ด๋ฆ ๊ฒฝ์ฐ -o ์ต์ ์ด ์ฃผ์ด์ง๋ค
๋ฉํ ๊ตฌ์ฑ.
?์์ค:์ด๋ค ๋ณธ๋ฌธ, for ์ฉ์ด์ฌ์
๊ธฐ๋ณธ์ ์ผ๋ก ์ ธ ๊ธฐํธ๋ฅผ ์ค๋ช ํ๋ ์ฃผ์์ผ๋ก ์ถ์ถ๋ฉ๋๋ค. ๋ฉ์ดํฌ๊ธ๋ก์ค
์ฉ์ด์ง ํ์ผ์.
?์์ค:. ์ ๊ธฐํธ ์ค๋ช ์ ๋ซ์ต๋๋ค.
?์จ:๊ธฐํธ_์ด๋ฆ [~ ๋ณ๋ช ] [(์๋์ ๋ค ๋จ์ด์ง ์์ง ๋ช ๋ถ)]:
์๋ก์ด C ๊ธฐํธ๋ฅผ ๋์ ํฉ๋๋ค. ๊ทธ๋งํผ ๋ณ๋ช name์ C ๊ธฐํธ์ ์ด๋ฆ์ ๋๋ค.
ํต์ ๋ ์ ์์ต๋๋ค. ์ฆ, ๋ณ๋ช ๊ธฐํธ๋ฅผ ์ํ๋ฉด ํด๋น C ๊ธฐํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
FBI ์ฆ์ค ๋ฒ์ฃ ๋ณด๊ณ ์ ๊ตฌ์ฑ_h.SH ํ์ผ. ์ผ๋ฐ์ ์ผ๋ก ๋ณ์นญ์ '%<'(์ฅ์น ์ด๋ฆ์ ๋ํ๋)์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ C ๊ธฐํธ๋ฅผ ?W: ๋ผ์ธ์ ๋งคํํ๋ ๋ผ์ธ๋ ์์ต๋๋ค. ๋ณ๋ช . ๊ด๋ จ ๋ถ๋ถ๋
?H: ํ์ '?%<' ์กฐ๊ฑด์ผ๋ก ๋ช ์์ ์ผ๋ก ๋ณดํธ๋ฉ๋๋ค. ๊ธฐํธ ๋ณด๊ธฐ
์์ธํ ๋ด์ฉ์ ์จ๋ฆฌ์ด์ฑ ๋จ๋ฝ์ ์ฐธ์กฐํ์ธ์. ๋๋จธ์ง ์ค์ ์ ํ ์ฌํญ์ ๋๋ค.
์๋์ ๋ค ๋จ์ด์ง ์์ง ๋ช ๋ถ, ์ ํญ๋ชฉ์ ๋ํ ๊ธฐ์กด ํญ๋ชฉ์ ๋์ดํฉ๋๋ค. ๊ธฐํธ_์ด๋ฆ.
?์จ:์ด๋ค ๋ณธ๋ฌธ, for ์ฉ์ด์ฌ์ ๊ณผ ๊ตฌ์ฑ_h.SH
๊ธฐ๋ณธ์ ์ผ๋ก C ๊ธฐํธ๋ฅผ ์ค๋ช ํ๋ ์ฃผ์์ผ๋ก ์ถ์ถ๋ฉ๋๋ค. ๋ฉ์ดํฌ๊ธ๋ก์ค
์ฉ์ด์ง ํ์ผ์ ๋ฉํ ๊ตฌ์ฑ ๋ก ๊ตฌ์ฑ_h.SH ๊ธฐํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํ์ผ
์ํจ(๋๋ ๊ธฐํธ ์จ๋ฆฌ์ด์ฑ์ ์ฌ์ฉํ ๋ ํด๋น ์จ๋ฆฌ์ด์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ).
?์จ:. C ๊ธฐํธ ์ค๋ช ์ ๋ซ์ต๋๋ค.
?์๊ฐ:?์์ง:๊ตฌ์ฑ_h.SH ๋ฌผ๊ฑด
๋ค์ ํญ๋ชฉ์ ๋ํ ์ผ๋ฐ์ ์ธ ํฌํจ ์์ฒญ์ ๋๋ค. ๊ตฌ์ฑ_h.SH. ์ด ์ค์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์์ฑ๋ฉ๋๋ค.
๊ฒฝ๋น ์์ง ์ ๋ง๋ก ์ํฉ๋๋ค. ์ด ์ผ๋ฐ์ ์ธ ํ์์ C ๊ธฐํธ์ ํ์ํฉ๋๋ค.
์จ๋ฆฌ์ด์ฑ์ด ์ฌ์ฉ๋์์ต๋๋ค. ๊ทธ๋ ์ง ์๊ณ ๋ค๋ฅธ "ํ์ค" ์์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๋ณดํธ๋ ์๋์ผ๋ก ์ํ๋ฉ๋๋ค. ๋ฉํ ๊ตฌ์ฑ ์์ฒด.
?์๊ฐ:#$d_var VAR "$var"
์กฐ๊ฑด๋ถ๋ก ์ ์ VAR C ๊ธฐํธ๋ก $var '๋ก ์ค์ ๋๋ฉด๋ฐํ๋ค'. ๋ค์์ ์๋ฏธํฉ๋๋ค.
'?VAR:' ๋ณดํธ ์ํ, ๊ทธ๋ฆฌ๊ณ ๋ฉํ ๊ตฌ์ฑ ์๋์ผ๋ก ๋งํฌ VAR ๋ ๊ฐ์ ๊ป์ง์
๋ณ์ ์ข ์์ฑ(์: ๋ ๋ค $d_var ๊ณผ $var ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค. ์ if VAR is
C ์์ค์์ ์ฌ์ฉ๋จ)
?H:#์ ์ VAR [์ ํ ๋ณธ๋ฌธ]
ํญ์ ์ ์ VAR C ๊ธฐํธ๋ฅผ ์ด๋ค ๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค. '?VAR:' ๋ณดํธ ์ํ์ ๋๋ค.
์ฅ์น ์์ฒด์ ์๋ ์ ธ ์ข ์์ฑ์ด ์ ์ฉ๋ฉ๋๋ค.
?H:#์ ์ ๋ณ์(x,y,z) $var
ํญ์ ๋งคํฌ๋ก๋ฅผ ์ ์ํฉ๋๋ค. VAR ์ ๊ฐ์น๊ฐ ๋๋๋ก $var ๋ณํ๊ธฐ ์ฌ์ด. ๊ทธ๊ฒ์ ์ ๋ฌ๋ ค์๋ค
๋ณด์ฅํ๋ ๋จ์ $var ํฉ๋ฆฌ์ ์ธ ๊ฐ์น๋ฅผ ์ง๋๊ณ ์์ต๋๋ค. C ๊ฐ์ ์๋ ์ข ์์ฑ
๋งคํฌ๋ก VAR ์ ๋ณ์๊ฐ ์ค์ ๋๊ณ ์ ์ฒด ๋ผ์ธ์ด ๋ณดํธ๋ฉ๋๋ค.
์๋ฌต์ ์ผ๋ก '?VAR:'.
?์๊ฐ:#$d_var VAR
์กฐ๊ฑด๋ถ๋ก ์ ์ VAR if $d_var '๋ก ์ค์ ๋์ด ์์ต๋๋ค.๋ฐํ๋ค'. '?VAR:'๊ฒฝ๋น
์ํ. ์๋ ์ ์ข ์์ฑ์ด ์์ฑ๋ฉ๋๋ค. $d_war.
?H:#์ ์ VAR "$var"
๊ตฌ์ฑ๋ ๊ฐ์ ํ ๋นํฉ๋๋ค. VAR C ๊ธฐํธ. '?VAR:' ๋ณดํธ ์กฐ๊ฑด.
๋งํฌ๋ฅผ ์ํด ์๋ ์ ธ ์ข ์์ฑ์ด ์์ฑ๋ฉ๋๋ค. VAR ๊ณผ $var.
?์๊ฐ:. ๋ซ๋๋ค ๊ตฌ์ฑ_h.SH ํฌํจ ์์ฒญ.
?์ค:C ์์ง: C ์์กด์ฑ
C ๊ธฐํธ์ ๊ดํ ๋ง๋ฒ ์ ์๋ฅผ ์๊ฐํฉ๋๋ค. confmagic.h, ๊ทธ๋ฆฌ๊ณ
๋๋จธ์ง ?M: ์ ์์ ๋ํ ๋ณดํธ ๊ธฐํธ์ ๋๋ค. ์ด ์ค์ ์กฐ์ฉํ ์์ํฉ๋๋ค.
'?W:%<:C ์์ง', ์ฆ C ๊ธฐํธ๊ฐ ๋ํ๋๋ฉด ์ฅ์น๊ฐ ๊ตฌ์ฑ์ ๋ก๋๋ฉ๋๋ค.
C ์์ค ๋ด์์ ๋ง๋ฒ์ด ์ฌ์ฉ๋๋์ง ์ฌ๋ถ. C ์ข ์์ฑ์ด ํ์ฑํ๋์์ต๋๋ค.
๋ง๋ฒ์ ์ฌ์ฉํ ๋ ์ ์๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๊ตฌ์ฑ_h.SH. ๊ทธ๋ฌ๋,
๋ง๋ฒ์ ์ง์ ์ฌ์ฉ๋์์ง๋ง C ๊ธฐํธ๊ฐ ํ์ํ C ์์ด ์์ค์ ๋ํ๋ฉ๋๋ค.
์ข ์์ฑ์ด ์๋ ๊ฒฝ์ฐ Wanted ํ์ผ์ด ๋น๋๋ ๋๋ง๋ค ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค.
์ด์์ฑ ๋ฌธ์ (๋ํ ์ฅ์น๊ฐ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋ก๋๋๊ธฐ ๋๋ฌธ์)
C ๊ธฐํธ๊ฐ ์ฌ์ฉ๋ ๋๋ง๋ค ๋ค๋ฅธ ?C: ํ์ ๊ด๊ณ์์ด ๊ตฌ์ฑํ์ญ์์ค.
๋จ์).
?์ค:CPP ๋ฐํ
๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋๋ง๋ค confmagic.h์ ๋์ ๋ ๋งค์ง cpp ๋งคํ์ ์ ์ํฉ๋๋ค.
๊ธฐํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฌต์ ์ผ๋ก '?SYM'์ด๋๋ฅผ ์งํค๊ณ SYM ๊ธฐํธ ์ด๋ฆ์ ๋๋ค
์ ํ ?M: ํ์ผ๋ก ์ ์๋ฉ๋๋ค.
?์ค:. ๋ซ๋๋ค confmagic.h ํฌํจ ์์ฒญ.
?W:๊ป์ง ์์ง ๋ช ๋ถ:C ์์ง ๋ช ๋ถ
C ๊ธฐํธ์ ์ด๋ช ๊ณผ ์ ๊ธฐํธ์ ์ด๋ช ์ ์ฐ๊ฒฐํฉ๋๋ค.
๋์ด๋ ๊ธฐํธ๊ฐ ํ์ํ๋ฉด ๋ชจ๋ ์ ๊ธฐํธ๊ฐ ์ํ๋ ๊ฒ์ผ๋ก ํ์๋ฉ๋๋ค. ๋ค์์ ์ ์ฉํจ
์ผ๋ถ C๊ฐ ์กด์ฌํ ๋ ๋จ์('%<'๋ก ์ค์ ๋ ์ ๊ธฐํธ ๋ชฉ๋ก)๋ฅผ ๊ฐ์ ๋ก ํฌํจํฉ๋๋ค.
๊ธฐํธ๊ฐ ๊ฐ์ง๋์์ต๋๋ค. ์ธก๋ฉด์์ ์ด์ ์ ์ป์ผ๋ ค๋ฉด ์ ๊ธฐํธ ๋ชฉ๋ก์ ๋น์ ๋ ์ ์์ต๋๋ค.
๋ด์ฅ ์ ์ฒ๋ฆฌ๊ธฐ ๋ด C ๊ธฐํธ ์์น์ ํจ๊ณผ(๊ธฐํธ๋ ํ์ ๋
์์ค์ ์๋ ๊ฒฝ์ฐ ํด๋น ์ ์ฒ๋ฆฌ๊ธฐ์ ๋ํด). ๊ณต๋ฐฑ์ด ์๋ ํจํด์ ์ฐพ์ผ๋ ค๋ฉด
๊ทธ ์์๋ 'struct'์ ๊ฐ์ด ๊ฐ๋จํ ๋ฐ์ดํ ์์ C ๊ธฐํธ๋ฅผ ์ธ์ฉํด์ผ ํฉ๋๋ค.
์๊ฐ๋ '.
?V:์ฝ๊ธฐ ์ ์ฉ ๊ธฐํธ:์ฝ๊ธฐ-์ฐ๊ธฐ ๊ธฐํธ
์ด๊ฒ์ ๋ฉํ๋ฆฐํธ ํํธ์ด๋ฉฐ ์ผ๋ถ ์์ ๋ด๋ณด๋ด๋ ํน์ ์ ๋์์๋ง ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ณ์. ์ค๊ฐ ':' ์์ ๋ณ์๋ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ด๋ณด๋ด์ง๋๋ค(๋ณ๊ฒฝ
๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค). ๋ฐ๋ฉด ๋ค๋ฅธ ๊ธฐํธ๋ ์์ ๋กญ๊ฒ ์ฝ๊ณ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
?NS:ํ์ผ ๋ง๋
์ด ์ค์ ๋ ๊ฐ์ง ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ฉํ๋ฆฐํธ ํํธ ๋ฐ ์๋ฆฌ ํ์์
๋ฏธ๋ ์ ์ด๋ฉ์ดํฌ ์ฌ์ฉํ๋ค. ์ธ ์ข ๋ฅ์ ํ์ผ์ ๋์ดํด์ผ ํฉ๋๋ค. ์์ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ ์คํธ๋ฅผ ์ํด ์์ฑ๋ ๊ฐ์ธ UU๋ ๋์ค์ UU ๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค.
์ ๋ , ๊ณต๊ฐ๋ ํจํค์ง์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ๋จ๊ฒจ๋ก๋๋ค. ์ผ์์ ์ธ
ํ์ผ์ ์์ '!' ๋ฌธ์("์๋์! ์ฌ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๋์ค์!"), ๊ฐ์ธ UU ํ์ผ ์์ './'(์๋ฏธ: ์ฌ์ฉํ๋ ค๋ฉด
./ํ์ผ์๋๋ผ ํ์ผ), ๊ณต๊ฐ๋ ์๋ ๊ทธ๋๋ก ์ด๋ฆ์ ์ง์ ํด์ผ ํฉ๋๋ค.
?NS:๊ป์ง ์์
๋ค๋ฅธ ๋ฉํ๋ฆฐํธ ํํธ. ์ด ์ค์๋ ์์๋ก ์ฌ์ฉ๋๋ ๋ชจ๋ ์ ๋ณ์๊ฐ ๋์ด๋ฉ๋๋ค.
์ด ์ฅ์น์ ์ ์น์ ๋ด์์.
?๋:์์ง='๊ฐ์น'
์กฐ๊ฑด๋ถ ์ข ์์ฑ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐํธ์ ์ด๊ธฐํ ๊ฐ์ ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ?D: ๋ผ์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ๊ฒฌ๋๋ฉด null ๊ฐ์ด ๋์ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋งํผ ๋ฉํ๋ฆฐํธ ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ธฐํธ๊ฐ ์กฐ๊ฑด๋ถ ์ข ์์ฑ์ผ๋ก ํ ๋ฒ ์ด์ ์ฌ์ฉ๋์์ผ๋ฉฐ ์ ์ ํ ๊ธฐํธ๊ฐ ์์ต๋๋ค.
?D: ์ด๊ธฐํ. null์๋ ํด๋น ์ค์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๊ธฐํ๋ ๊ธฐํธ์ ์ ํ์ ํน์ฑ์ ๊ฐ์กฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
?์ํ:์ด๋ค ๋ฉ์์ง ๋น์ ํ์
์ด ์ง์นจ์ ์ด ์ฅ์น๊ฐ ์ ์ฒด์ ์ผ๋ก ๋ ์ด์ ์ฌ์ฉ๋์ง ์์์ ๋ํ๋ ๋๋ค. ์ด๋ค ๊ฒ์ ์ฌ์ฉํ ๋๋ง๋ค
ํด๋น ๊ธฐํธ๊ฐ ๋ง๋ค์ด์ง๋ฉด(๋๋ ์ข ์์ฑ์ ํตํด ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉ) ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
ํ๋ฉด (stderr์์). ํ๋ ์ด์์ ์ค์ ๋ฃ์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฐ ์ค์
์์๋๋ก ์ธ์๋ฉ๋๋ค.
?๋ฆฐํธ:๋ฉํ๋ฆฐํธ ํํธ
์ ์ฐธ์กฐ ๋ฉํ๋ฆฐํธ ์ฌ์ฉํ ์ ์๋ ๊ณ ์ ํ ํํธ๋ฅผ ์ค๋ช ํ๋ ๋งค๋ด์ผ ํ์ด์ง
์ต์ํ.
?INIT:์ด๊ธฐํ ์ํธ
์ด ์ค์ ์ง์ ๋ ์ด๊ธฐํ ์ฝ๋๋
๊ตฌ์ฑ ๋จ์๊ฐ ํ์ํ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ.
C ์์ง ์จ๋ฆฌ์ด์ฑ
๋๋ก๋ ์์งํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค ๋ฉํ ๊ตฌ์ฑ์ ๋ํ ์์ ์ ๊ธฐ๋ณธ ์ ํ ๊ตฌ์ฑ_h.SH
์ฃผ์ ๋ฐ C ๊ธฐํธ ์ ์. ์ฌ๊ธฐ์ ์จ๋ฆฌ์ด์ฑ์ด ์์ฉํฉ๋๋ค. ์คํ๋ ค ๊ทธ๋ ๊ธฐ ๋๋ฌธ์
์ค๋ช ํ๊ธฐ ๊น๋ค๋ก์ฐ๋ฏ๋ก ๊ธฐ๋ณธ ๋ฉ์ปค๋์ฆ์ ์ดํดํ๊ธฐ ์ํด ์๋ฅผ ์ฐ๊ตฌํ๊ฒ ์ต๋๋ค.
d_const.U ์ ๋์ C ์ปดํ์ผ๋ฌ๊ฐ const๋ฅผ
์์ด. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํด๋น ํค์๋๋ฅผ null ๋ฌธ์์ด๋ก ๋ค์ ๋งคํํ์ฌ
ํ๋ก๊ทธ๋จ ์ปดํ์ผ. ๋ํ, ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ํ ์คํธ๋ฅผ ์คํํ๋ ค๊ณ ํฉ๋๋ค. const๋ฅผ ์๋
์ฌ์ฉ.
d_const.U ์ ๋์ ๊ด๋ จ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
?MAKE:d_const: cat cc ccflags Setvar
?MAKE: -$@% ์ถ๊ฐ ์ ํ
?S:d_const:
?S: ์ด ๋ณ์๋ HASCONST ๊ธฐํธ๋ฅผ ์กฐ๊ฑด๋ถ๋ก ์ ์ํฉ๋๋ค.
?S: ์ด C ์ปดํ์ผ๋ฌ๊ฐ C ํ๋ก๊ทธ๋จ์ ๋ํด ์๊ณ ์์์ ๋ํ๋ ๋๋ค.
?S: const ์ ํ.
?์์ค:.
?C:HASCONST ~ %<:
?C: ์ ์๋ ๊ฒฝ์ฐ ์ด ๊ธฐํธ๋ ์ด C ์ปดํ์ผ๋ฌ๊ฐ ๋ค์ ์ฌํญ์ ์๊ณ ์์์ ๋ํ๋ ๋๋ค.
?C: const ์ ํ. ํด๋น ๊ธฐํธ๋ฅผ ์ค์ ๋ก ํ ์คํธํ ํ์๋ ์์ต๋๋ค.
?C: ํ๋ก๊ทธ๋จ ๋ด. "const" ํค์๋๋ง ์ฌ์ฉํ๋ฉด
?C: ํ์ํ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
?์จ:.
?H:?%<:#$d_const HASCONST /**/
?H:?%<:#ifndef HASCONST
?H:?%<:#define const
?H:?%<:#endif
?์๊ฐ:.
?W:%<:const
?LINT:d_const ์ค์
?LINT:์๋ ค์ง const
: const ํค์๋๋ฅผ ํ์ธํ์ธ์
์์ฝ " "
echo 'C ์ปดํ์ผ๋ฌ๊ฐ "const"์ ๋ํด ์๊ณ ์๋์ง ํ์ธํ๋ ์ค...' >&4
/bin/๊ณ ์์ด >const.c <<'EOCP'
๋ณธ๊ด()
{
const char *foo;
}
EOCP
if $cc -c $ccflags const.c >/dev/null 2>&1 ; ๊ทธ ๋ค์์
val="$define"
echo "๊ทธ๋ ์ต๋๋ค."
๊ทธ๋ ์ง ์์ผ๋ฉด
val="$undef"
echo "์๋์, ๊ทธ๋ ์ง ์์์."
fi
d_const๋ฅผ ์ค์ ํ๋ค
ํ๊ฐ $setvar
๋จผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ?W: ํ์ ์ฌ์ฉ์ ํ์ธํฉ๋๋ค. "์ด ์ฅ์น๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ํ์ํฉ๋๋ค.
const๋ฅผ ํค์๋๋ C ํ์ผ์์ ์ฌ์ฉ๋ฉ๋๋ค.". ์กฐ๊ฑด๋ถ๋ก ๋ค์ ๋งคํํ๋ ค๋ฉด const๋ฅผ ๋๋ก
๋ฌธ์์ด ๊ตฌ์ฑ.h, ์กฐ๊ฑด๋ถ ์ ์๋ฅผ ์ ํํ์ต๋๋ค. HASCONST ๋ฅผ ํตํด $d_const.
๊ทธ๋ฌ๋ ์ด๋ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๋ค. ์๋ํ๋ฉด HASCONST ๊ธฐํธ๋ ๋ค์์์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
์ถ์ฒ๋ ์ค์ง const๋ฅผ ํ ํฐ์. ๊ทธ๋ฆฌ๊ณ ?H: ๋ผ์ธ ์ ์ HASCONST ์๋ฌต์ ์ผ๋ก
'?HASCONST'๋ก ๋ณดํธ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ช ์์ ์ธ '?%<' ์ ์ฝ ์กฐ๊ฑด์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๋ฉํ ๊ตฌ์ฑ ํด๋น ์ค์ด ํฌํจ๋์ด์ผ ํจ ๊ตฌ์ฑ_h.SH '%<' ๊ธฐํธ๊ฐ ๋ํ๋ ๋๋ง๋ค
์๋ฐฐ๋จ(%<๋ ์ ๋ ์ด๋ฆ์ ๋ํ๋ ๋๋ค. ์ฌ๊ธฐ์๋ d_const).
๊ฑฐ์ ์๋ฒฝํฉ๋๋ค. ์๋ํ๋ฉด ?W: ๋ผ์ธ์ด ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. d_const ๋๋ง๋ค const๋ฅผ ์ฌ์ฉ๋ ๋ค์
?H: ํ์ด ๊ตฌ์ฑ_h.SH ํ์ผ. ๊ทธ๋ฌ๋ ์ฃผ์ ๋๊ธ(?C:
๋ผ์ธ)์ ์ฒจ๋ถ HASCONST ๊ทธ ์์ฒด๋ ๋ค์์ ํตํด ๋ณดํธ๋ฉ๋๋ค. HASCONST, ์ฆ ์์์ ์ธ ์๋ฏธ๊ฐ ์์ต๋๋ค.
'?HASCONST' ์ ์ฝ ์กฐ๊ฑด. ๋ฐ๋ผ์ ๋ค์์ด ํ์ํฉ๋๋ค. ์จ๋ฆฌ์ด์ฑ ์ ์, HASCONST ๊ธฐํธ๋ฅผ '%<'๋ก ์ง์ ํฉ๋๋ค.
์ ๋์ ๋๋จธ์ง ๋ถ๋ถ(์ ๋ถ๋ถ)์ ์ ๋ง ๊ฐ๋จํฉ๋๋ค. ๊ทธ๊ฒ์ ๋จ์ํ
๋ค์์ ์ฌ์ฉํ์ฌ ์ํ C ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ๋ ค๊ณ ํฉ๋๋ค. const๋ฅผ ์์ด. ๊ทธ๋ด ์ ์๋ค๋ฉด ๊ทธ๋ด ๊ฒ์ด๋ค.
๋ฐํ๋ค $d_const ๋ฅผ ํตํด $์ธํธ๋ฐ ๊ธฐ๋ฅ(๋ค์์ ์ํด ์ ์๋จ) Setvar.U ๋จ์). ๋จ๋ฝ์ ์ฐธ์กฐํ์ญ์์ค
์์ธํ ๋ด์ฉ์ ํน์ ์ ๋์ ๋ํด ์์๋ณด์ธ์.
ํ์ธ ๋ช ๋ น
?MAKE: ๋ช ๋ น์ค์์ ์๋ ๊ทธ๋๋ก ์คํ๋๋๋ก ์ ๋ช ๋ น์ ์์ฑํ ์ ์์ต๋๋ค.
ํน๋ณํ -์ ํํ๋ค ์ ์ํด ํธ๋ฉ๋ ๋ช ๋ น ๋ฉํ ๊ตฌ์ฑ ๊ทธ๋ฆฌ๊ณ ๋ฌด์์ ํด์ผ ํ๋์ง ์์๋ณด๊ธฐ ์ํด ๊ตฌ๋ฌธ ๋ถ์ํ์ต๋๋ค.
์๋ฃ. ์์ '-'๋ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ํ์ธ ๋ช ๋ น์ด ๋ฐํ๋ ๋ ์คํจ๋ก๋ถํฐ
XNUMX์ด ์๋ ์ํ - '๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก๋ ํ์ํ์ง ์์ต๋๋ค.ํ์ธ -n'๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด
์ข ์์ฑ์ด ์์ง๋ง ํฅํ ๋ฒ์ ์์ ํ์๊ฐ ๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ตฌ๋ฌธ ์ ํ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
-์ ํํ๋ค cmd๋ฅผ $@ target_file
์ด๋์ $@ ํ์ฌ ๋์(์ด๋ฆ)์ ๋ํ๋ด๋ Makefiles ๋ด์ ํ์ค ๋งคํฌ๋ก์ ๋๋ค.
์ต์ข .U ํ์ฅ์๊ฐ ์ ๊ฑฐ๋ ์ ๋์ ๊ตฌ์ฑ). ๊ทธ๋งํผ cmd๋ฅผ ๋ถ๋ถ์
์ค์ ๋ฉํ ๊ตฌ์ฑ ์คํํ ๋ช ๋ น๊ณผ target_file ๋ ๋ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์์ ๋๋ค.
ํด์์ ์ ๋ฌ๋ ค์๋ค. cmd๋ฅผ ๊ทธ ์์ฒด. ๋ํ ์ต์ข .U ํ์ฅ์๊ฐ ์ ๊ฑฐ๋๊ณ
์ผ๋ฐ์ ์ผ๋ก ์ ๋ ํ์ผ์ ์ฐธ์กฐํฉ๋๋ค. ๋จ, './'๋ก ์์ํ๋ ๊ฒฝ์ฐ์๋ ์ ๋ ํ์ผ์ ์ฐธ์กฐํฉ๋๋ค.
์ ๋ฉํ ๊ตฌ์ฑ '์ ์ ์ด ํ์ผ.์ฐ ๋๋ ํ ๋ฆฌ.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ถ๊ฐ target_file ์ ๊ตฌ์ฑ.
์ถ๊ฐ.Config_sh
๊ทธ ๋ถ๋ถ์ ์ฑ์์ค๋ค. ๊ตฌ์ฑ ์์ฐ config.sh ํ์ผ. ๋ง ์ฌ์ฉ๋จ
๋ณ์๊ฐ ์ถ๊ฐ๋๊ณ ์กฐ๊ฑด๋ถ ๋ณ์(์กฐ๊ฑด๋ถ ์ข ์์ฑ์์ ๋น๋กฏ๋จ)๋
๊ฑด๋๋ฐ์๋ค.
add.Null ๋น ๋ฌธ์์ด์ ์ฌ์ฉ๋๋ ๋ชจ๋ ์ ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ์น์ ์ ์ถ๊ฐํฉ๋๋ค.
c_h_weed๋ ๊ตฌ์ฑ_h.SH ํ์ผ. ํ์ํ ์ค๋ง ์ธ์๋ฉ๋๋ค.
cm_h_weed๋ confmagic.h ํ์ผ. ํ์ํ ์ค๋ง ์ธ์๋ฉ๋๋ค. ์ด๊ฒ
๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ํ์ฑํ๋ฉ๋๋ค. -M ์ค์์น๊ฐ ์ฃผ์ด์ง๊ฑฐ๋ confmagic.h ํ์ผ
์ด๋ฏธ ์กด์ฌ ํจ.
๋ซ๊ธฐ.Config_sh
here ๋ฌธ์๋ฅผ ๋๋ด๊ธฐ ์ํด ํ ์ค์ ๋ง์ง๋ง 'EOT' ๊ธฐํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์์ฐํ๋ ๊ฑด์ค config.sh ํ์ผ.
prepend ๋์์ ๋ด์ฉ์ target_file ํด๋น ํ์ผ์ด ๋น์ด ์์ง ์์ ๊ฒฝ์ฐ.
์ก์ด์ ์ ๋์ ์ถ๊ฐํฉ๋๋ค. ๊ตฌ์ฑ ๊ฐ์ ๋ํ๋ค ๋ช ๋ น์ ์คํํ์ง๋ง ๋ช ๊ฐ์ง ์ถ๊ฐ ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.
์ ๊ฑฐํ๋ ค๋ฉด '?์์ง' ๊ทธ๋ฆฌ๊ณ '%์์ง' ๋ผ์ธ์์ target_file ๊ธฐํธ๋ผ๋ฉด
์ํ์ง ์๊ฑฐ๋ ์กฐ๊ฑด๋ถ๋ก ์ํ์ง ์์ต๋๋ค. '%' ํ์์ ๋ด๋ถ์ ์ผ๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค.
๋ฉํ ๊ตฌ์ฑ '์์ ์์ฒด .U ํ์ผ์ ์์ฑํ๋ ๋์.์ฐ' ๋๋ ํ ๋ฆฌ.
๋ฆ๋ค ๋ํ๋ค ์ค์ ๋ก๋ ์ถ๊ฐ ๋งคํฌ๋ก ๋์ฒด๋ฅผ ์ํํฉ๋๋ค. ๊ทธ๋งํผ
์ฌ์ฉ ๊ฐ๋ฅํ ๋งคํฌ๋ก๋ ๊ณ ์ ๋ฐฐ์ ๋งคํฌ๋ก ๋จ๋ฝ.
๋ถ์์ ์ผ๋ก, ๋ฉํ ๊ตฌ์ฑ ์์ฑ -์กฐ๊ฑด ์กฐ๊ฑด๋ฌธ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ด๋ถ์ ์ผ๋ก ๋ช ๋ น
์์กด์ฑ. ์ง์ ์ฌ์ฉํด์๋ ์ ๋์ง๋ง ์ค์บํ๋ฉด ํ์๋ฉ๋๋ค.
์์ฑ Makefile FBI ์ฆ์ค ๋ฒ์ฃ ๋ณด๊ณ ์ .์ฐ ๋๋ ํ ๋ฆฌ.
๊ณ ์ ๋ฐฐ์ ๋งคํฌ๋ก
๋ค์ ๋งคํฌ๋ก๋ ์์ ์ธ์๋ฉ๋๋ค. ๋ฆ์ ๋ช ๋ น์ ํฌํจ๋๊ธฐ ์ ์ ๋์ฒด๋ฉ๋๋ค.
๊ตฌ์ฑ:
๋ค์์์ ํ์๋ ํจํค์ง์ ๊ธฐ๋ณธ ๊ฐ์ ๋ฒํธ์ ๋๋ค. ํจํค์ง.
ํ์ฌ ๋ ์ง์ ๋๋ค.
๊ทํ๋ก๋ถํฐ ํ์๋ ์ด ํจํค์ง ๊ด๋ฆฌ์์ ์ด๋ฉ์ผ ์ฃผ์
ํจํค์ง.
ํจํค์ง ์ด๋ฆ(๊ทํ์ ์ด๋ฆ์์ ํ์๋จ) ํจํค์ง ํ์ผ.
ํจ์น ์์ค์ ๋ฉํ ๊ตฌ์ฑ ํ๋ก๊ทธ๋จ (๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ).
SVN ๊ฐ์ ์์ค์ ๋ฉํ ๊ตฌ์ฑ ํ๋ก๊ทธ๋จ)
๋ฒ์ ๋ฒํธ ๋ฉํ ๊ตฌ์ฑ ํ๋ก๊ทธ๋จ)
์ด๋ฌํ ๋งคํฌ๋ก๋ ์ฃผ๋ก ๋ค์์ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฉํ ๊ตฌ์ฑ ์์ฑ๋ ๋ฒ์
ํน๋ณํ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ์ ์ด๋ค ํจํค์ง์ ๋ํด ์ํ๋์๋์ง. ์ด๋ฉ์ผ ์ฃผ์
์ ์ง๊ด๋ฆฌ์๋ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ์ง์นจ์ ๋ด์ฅ๋์ด ์์ต๋๋ค. ๊ตฌ์ฑ ์์ํ ๋ ์ธ์๋ฉ๋๋ค.
์ต๊ทผ ๋ฉํ ๊ตฌ์ฑ ๋ฒ์ ์ ๋ค์ ํ์์ ํจ์ฌ ๋ ์ผ๋ฐ์ ์ธ ๊ตฌ๋ฌธ์ ์ดํดํฉ๋๋ค.
<$๋ณ์>
์ด๋ ๊ตฌ์ฑ ์์ฑ ์๊ฐ์ ๋ค์ ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค. ๋ณ์ ๋น์ ์๊ฒ์ ๊ฐ์ ธ์จ
ํจํค์ง ํ์ผ. ๊ฒฐ๊ตญ ๊ธฐ์กด์ ํ๋์์ด์ด ๋งคํฌ๋ก ํ์์ ์ฌ๋ผ์ง๊ณ <$baserev>
๋์ฒดํ ๊ฒ์ด๋ค ์ ๊ณต๋ ๋ชจ๋ ๋จ์์์.
์ด๋ฌ์ ์คํ์ ๋จ์
์ฝ๋๋ฅผ ์ธ์๋ถํดํ๊ณ ๋ ๋์ ์์ค์ ์ฝ๋๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ํน์ ๋จ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ธฐ๋ฅ. ๊ทธ๋ค์ ์์ค๋ก ์ ๊ณต๋ ์ ์๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ์์ฑํฉ๋๋ค.
๋ณ์๊ฐ ๋ ์ ์๋ค ํ๊ฐ'ed. ๋งค๊ฐ๋ณ์ ์ ๋ฌ์ ์ ์๋ ค์ง ๋ณ์๋ฅผ ํตํด ์ํ๋ฉ๋๋ค.
$1, $2 ๋ฑ๊ณผ ๊ฐ์ ์ด๋ฆ ๋๋ ์ต๋ช ...(์ ธ์ ํตํด ์ฝ๊ฒ ์ค์ ํ ์ ์์) ์ธํธ
์ด์์). ์ธ์ ๊ตฌ์ฑ ์คํํ๊ณ , ์์ฑํ๊ณ , UU ๋๋ ํ ๋ฆฌ, ๊ทธ๋์ ๋ชจ๋
์์ฑ๋ ์คํฌ๋ฆฝํธ๋ ๊ฑฐ๊ธฐ์ ์์ผ๋ฉฐ ํจํค์ง์ ํ์ผ์ ๋ฐฉํดํ์ง ์์ต๋๋ค.
์์์ผ ํ ํน๋ณ ๋จ์์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Cppsym.U
์ด ์ ๋์ ๋ค์๊ณผ ๊ฐ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค. Cppsym, ์ด๋ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๋ชฉ๋ก์ ๊ธฐํธ๊ฐ C ์ ์ฒ๋ฆฌ๊ธฐ ๋๋ C ์ปดํ์ผ๋ฌ์ ์ํด ์ ์๋์๋์ง ์ฌ๋ถ
์ง์ . ๋ชจ๋ ๊ธฐํธ์ ์ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
(์์ฑ ๋ชฉ๋ก)์ด ๋ ์ฝ๊ฒ ๊ฒฐ์ ๋ฉ๋๋ค.
Csym.U
์ด๋ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋ $csym ์ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค. ๊ตฌ์ฑ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํด
์ฃผ์ด์ง C ๊ธฐํธ๊ฐ ์ ์๋์๋์ง ์ฌ๋ถ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ฉ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐํธ ๊ฒฐ๊ณผ ์ค์ [-fva] [์ด์ ]
ํ๊ฐ $csym
๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ณผ ํจ์ [-f], ๋ณ์ [-v] ๋๋
๋ฐฐ์ด [-a]๊ฐ ์ ์๋์ด ์๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด 'false'์ ๋๋ค. ์ด์ ๊ฐ์ด ์ฃผ์ด์ง๊ณ -r
์ค์์น๊ฐ ์ ๊ณต๋์์ต๋๋ค ๊ตฌ์ฑ (์ฐธ์กฐ ๊ตฌ์ฑ ์ต์ ๋จ๋ฝ) ๊ทธ๋ฌ๋ฉด ๊ทธ
๊ฐ์ ์ง๋ฌธ ์์ด ์ฌ์ฌ์ฉ๋ฉ๋๋ค.
์ด ๊ณ์ฐ์ด ์ํ๋๋ ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ์ง๋ฌธ์ ์ ๊ณตํ๋ ๋ต๋ณ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๊ตฌ์ฑ ๋ค์์ ์ํํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๋ฌป์ต๋๋ค. nm ์ถ์ถ ์ฌ๋ถ. ๋ง์ฝ
์ถ์ถ์ด ์ํ๋๋ฉด ์ฅ์น๋ ๋จ์ํ ๊ธฐํธ ๋ชฉ๋ก์ ์ดํด๋ด ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ์ปดํ์ผ ๋งํฌ ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค. -r ์ด์ ์ ๊ณ์ฐ๋ ๊ฒ์ ์ฌ์ฌ์ฉํ๋๋ก ์ฃผ์ด์ก์ต๋๋ค.
๊ฐ์น๋ ๋น์ฐํ...
์๋์
์ด ์ฅ์น๋ฅผ ๊ฐ์ธ์ฉ์ผ๋ก ๋ณต์ฌํ์ฌ U ๋๋ ํ ๋ฆฌ์ ์ข ์์ฑ์ ์ถ๊ฐํ๊ณ
?MAKE: ๋ผ์ธ์ ์ฌ์ฉํ๋ฉด ํน์ ์ ๋์ ๊ฐ์ ๋ก ๋ก๋ํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ ๊ทธ๋ ์ง ์๋๋ผ๋
๊ทธ๋ ์ง ์์ผ๋ฉด ์ํ์ต๋๋ค. ์ผ๋ถ ์ ๋์ ๊ฐ์ ๋ก ๊ตฌ์ฑ ๊ทธ๋ฐ ์์ผ๋ก.
Filexp.U
์ด ์ฅ์น๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค ํ์ผ์์ค ๋ค์์ผ๋ก ์์ํ๋ ํ์ผ ์ด๋ฆ์ ํ์ฅํฉ๋๋ค.
๋ฌผ๊ฒฐํ. ์ผ๋ฐ์ ์ธ ์ฉ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
exp_name=`./fileexp $name`
ํ์ฅ๋ ํ์ผ ์ด๋ฆ์ ํ ๋นํ๋ ค๋ฉด exp_name.
Findhdr.U
์ด ์ฅ์น๋ findhdr ํค๋ ํ์ผ์ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ ์คํฌ๋ฆฝํธ
$usrinc ๋๋ cpp ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ๋ฏ์ ์ฅ์. ์คํฌ๋ฆฝํธ์๋
'stdio.h' ๋๋ 'sys/file.h'์ ๊ฐ์ ํ์ผ ๊ธฐ๋ณธ ์ด๋ฆ์ ํฌํจํ๊ณ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๋ฐํํฉ๋๋ค.
inlcude ํ์ผ๊ณผ 0 ์ํ๊ฐ ๋ฐ๊ฒฌ๋ ๊ฒฝ์ฐ ๋๋ ๋น ๋ฌธ์์ด๊ณผ 0์ด ์๋ ์ํ
ํ์ผ์ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ.
Getfile.U
์ด ์ฅ์น๋ ํ์ผ์ ์ป๊ธฐ ์ํด ์์ค๋ก ์ ๊ณต๋์ด์ผ ํ๋ ์ฝ๊ฐ์ ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ฆ์ ์ง์ ํ๊ณ ๊ฑด๊ฐ ์ํ๋ฅผ ํ์ธํ์ธ์. ์ ํ์ ์ผ๋ก ~name ํ์ฅ์ด ์ํ๋ฉ๋๋ค.
๋ณธ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, $rp ๊ณผ $dflt ์ง๋ฌธ๊ณผ ๊ธฐ๋ณธ ๋ต๋ณ์ ๋ณด์ ํด์ผ ํฉ๋๋ค.
๊ทธ๋๋ก ์ ๋ฌ๋ฉ๋๋ค. ๋ด ์ฑ ์คํฌ๋ฆฝํธ(ํฅํ ์ฐธ์กฐ ๋ง์ด๋ฆฌ๋.์ ). $fn
๋ณ์๋ ์์ ์ ์ ์ดํ๊ณ ๊ฒฐ๊ณผ๋ $ans.
ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ์ผ๋ ค๋ฉด 'f' ๋๋ 'd'๋ฅผ ์ ๋ ฅํ์ธ์. ์ํ~/. '~'๊ฐ ๋ํ๋๋ฉด ~name
๋์ฒด๊ฐ ํ์ฉ๋ฉ๋๋ค. '/'๊ฐ ๋ํ๋๋ฉด ์ ๋ ๊ฒฝ๋ก ์ด๋ฆ๋ง ํ์ฉ๋๋ฉฐ
~name ๋์ฒด๋ ํญ์ ๋ฐํ๋๊ธฐ ์ ์ ํ์ฅ๋ฉ๋๋ค. '+'๋ฅผ ์ง์ ํ๋ฉด
์กด์ฌ ํ์ธ์ ๊ฑด๋๋๋๋ค. ๋ด์ 'n'์ด ๋ํ๋๋ ๊ฒฝ์ฐ $fn, ์ฌ์ฉ์๋ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
'์์'์ด๋ผ๊ณ ๋๋ตํ์ธ์.
์ผ๋ฐ์ ์ผ๋ก ์ด์์ฑ์ ์์ฒญํ์ง ์๋ ํ ์์ฒญ ์ ~name ๋์ฒด๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด์์ฑ์ ์ฐํํ๊ณ ๊ฐ์ ๋ก
์นํ. ๊ทธ๋ ๊ฒ ํ๋ ค๋ฉด 'e' ๋ฌธ์(ํ์ฅ)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํน๋ณํ 'l'(์ฐพ๊ธฐ) ์ ํ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ $fn ๋ณ์๋ ':'์ผ๋ก ๋๋์ผ ํฉ๋๋ค.
๊ทธ ๋ค์ ํ์ผ ๊ธฐ๋ณธ ์ด๋ฆ์ด ์ต๋๋ค. ๋๋ต์ด ๋๋ ํฐ๋ฆฌ์ธ ๊ฒฝ์ฐ ํ์ผ ๊ธฐ๋ณธ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ผ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ ์คํธํ๊ธฐ ์ ์ ์ถ๊ฐ๋ฉ๋๋ค. ์ด๋ ์ฐพ๊ธฐ ์คํ์ผ ์ง๋ฌธ์ ์ ์ฉํฉ๋๋ค.
์ด๋ ๊ฒ :
dflt='~๋ด์ค/lib'
: 'l'์ ์ฌ์ฉํ ๊ฒฝ์ฐ 'd' ๋๋ 'f'๋ฅผ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค.
fn='l~:ํ์ฑ'
rp='ํ์ฑ ํ์ผ์ ์ด๋์ ์์ต๋๊น?'
. ./getfile
ํ์ฑ="$ans"
๋ํ 'p'(๊ฒฝ๋ก) ๋ฌธ์๋ฅผ 'l'๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ค์์ ์๋ฆด ์ ์์ต๋๋ค.
ํ์ผ ๊ฐ์ ธ์ค๊ธฐ '/'๊ฐ ์๋ ๋ต๋ณ์ ํ์ฉ๋์ด์ผ ํฉ๋๋ค.
์ด ๊ฐ์ด ํ์ํ ๋ ๋ชจ๋ ์ฌ๋์ PATH์ ์์ด์ผ ํฉ๋๋ค.
๋ํ ์๋ฝํด์ผ ํ๋ ๋ต๋ณ ๋ชฉ๋ก์ ์ง์ ํ ์ ์๋ ๊ธฐ๋ฅ๋ ์ ์ฉํฉ๋๋ค.
๋ชจ๋ ๊ฒ์ฌ๋ฅผ ์ฐํํฉ๋๋ค. ์ด ๋ชฉ๋ก์ ๊ดํธ์ ํญ๋ชฉ ์์ ์์ด์ผ ํฉ๋๋ค.
๊ณต๋ฐฑ ์์ด ์ผํ๋ก ๊ตฌ๋ถํด์ผ ํฉ๋๋ค. ์ธ์ฉํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.
๊ดํธ๋ ์์ ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก ๊ฒฐ๊ณผ ๋ฌธ์์ด์ ๋๋ค. ์๋ฅผ ๋ค์ด:
dflt='/bin/์ค์น'
fn='/fe~(์ค์น,./install)'
rp='์ด๋ค ์ค์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์๊ฒ ์ต๋๊น?'
. ./getfile
์ค์น="$ans"
์ฌ์ฉ์๋ ๊ธฐ์กด ํ์ผ์ ์ฐธ์กฐํ๋ ์ ๊ทํ๋ ๊ฒฝ๋ก๋ง ์ง์ ํ ์ ์์ต๋๋ค.
ํ์ง๋ง ํน์ํ "install" ๋ฐ "./install" ๋ต๋ณ์ ๊ทธ๋๋ก ํ์ฉํฉ๋๋ค(๋ค์์ ๊ฐ์ ).
๋ฌผ๋ก ๋์ค์ ์ฒด์ธ์์ ํน๋ณํ ์ฒ๋ฆฌํ ์ผ์ด ์์ ๊ฒ์ ๋๋ค.
์ผ๋ฐ์ ์ธ ์์ ํ๋ ์๊ณผ ์ผ์นํ์ง ์์).
์ง๋ฌธ์ ๋ํ ๋๋ต์ด '์์'์ด๋ฉด ์กด์ฌ ํ์ธ์ ๊ฑด๋๋ฐ๊ณ
๋น ๋ฌธ์์ด์ด ๋ฐํ๋ฉ๋๋ค. ๊ทธ ์ดํ๋ก ์ฐธ๊ณ ํ์ธ์ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ ํตํ ๋ด ์ฑ ๋ด๋ถ์ ์ผ๋ก๋ ๋ชจ๋
ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ ๋ด ์ฑ ์ฌ๊ธฐ์ ์ ์ฒญํ์ธ์.
์์ ํ ํ์ฅ๋ ๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ(์: Makefile์์) ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์, $ansexp ํญ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋๋ ๋ณ์ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ ํ์ฅ๋จ์ ๋ฐ๋ผ
๋ฒ์ $ans. ๋ฌผ๋ก , ~name์ ํ์ฉํ์ง ์์ผ๋ฉด ํ์ฅ๋์ง ์์ต๋๋ค.
์์ XNUMX ์ $fn ๋ณํ๊ธฐ ์ฌ์ด.
Inhdr.U
์ด ์ฅ์น๋ $inhdr ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ ๋ณ์ ๊ตฌ์ฑ ํ์ธํ๋
ํค๋ ์ธํธ๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ. ์ผ๋ฐ์ ์ธ ์ฉ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํค๋ i_header ์ค์ [ header2 i_header2 ... ]
ํ๊ฐ $inhdr
๊ทธ๋ฌ๋ฉด ํค๋๋ฅผ ์ฐพ์๋์ง ์ฌ๋ถ๋ฅผ ์๋ฆฌ๋ ๋ฉ์์ง๊ฐ ์ธ์๋๊ณ
i_header ๊ทธ์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ ๋๋ค. ๋ ๊ฐ ์ด์์ ํค๋๊ฐ ์ง์ ๋๊ณ ์ฒซ ๋ฒ์งธ ํค๋๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ
ํค๋๋ฅผ ์ฐพ์ ์ ์์ผ๋ฉด ๋ชฉ๋ก์ด ๋น์ด ์๊ฑฐ๋ ํ๋๋ฅผ ์ฐพ์ ๋๊น์ง ๋ค์ ํค๋๋ฅผ ์๋ํฉ๋๋ค.
Inlibc.U
์ด ์ฅ์น๋ $inlibc ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ ๋ณ์ ๊ตฌ์ฑ ํ์ธํ๋
์ฃผ์ด์ง C ํจ์๊ฐ ์ ์๋์๋์ง ์ฌ๋ถ. ์ผ๋ฐ์ ์ธ ์ฉ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํจ์ d_func ์ค์
ํ๊ฐ $inlibc
๊ทธ๋ฌ๋ฉด ํจ์๊ฐ ๋ฐ๊ฒฌ๋์๋์ง ์ฌ๋ถ๋ฅผ ์๋ฆฌ๋ ๋ฉ์์ง๊ฐ ์ธ์๋๊ณ ์ค์ ๋ฉ๋๋ค.
$d_func ๋ฐ๋ผ์. ๋ด๋ถ์ ์ผ๋ก๋ $csym ์ผ์.
๋กํฌ์
์ด ์ค์ํ ๋จ์๋ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค LOC ์ด๋ ์ด๋์ ์๋์ง ์์๋ด๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ํน์ ํ์ผ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ธ์๋ ํ์ผ์ ์ง์ ํฉ๋๋ค.
๋ ๋ฒ์งธ ์ธ์๋ ๊ฒ์์ด ์คํจํ ๊ฒฝ์ฐ ๋ฐํ๋ ํญ๋ชฉ์ด๋ฉฐ,
reaming ์ธ์๋ ํ์ผ์ ๊ฒ์ํ ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก์ ๋๋ค. ์ ์ํ
์:
dflt=`./loc sendmail.cf X ๋ฅผ / usr / lib์ /var/lib/sendmail / lib`
์ค์ ํ ๊ฒ์ด๋ค $dflt ์ X ์๋๋ผ๋ฉด sendmail.cf ํ์ผ์ด ๋์ด๋ ๋๋ ํ ๋ฆฌ ์๋์์ ๋ฐ๊ฒฌ๋์์ต๋๋ค.
๋๋ ๋ญ๊ฐ /usr/lib/sendmail.cf ์ผ๋ถ ์์คํ ์์๋. ๋ํ๋ณด์ญ์์ค Getfile.U.
๋ฉ์ผ์์ฑ์.U
์ด ์ ๋์ ๋ง๋ค๋ ค๋ฉด ๊ฐ์ธ End.U์ ?MAKE: ๋ผ์ธ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
๊ทธ๊ฒ์ผ๋ก ๊ตฌ์ฑ. ์ ํ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์์ฑ์์๊ฒ ์์ ์ ๋ฑ๋กํ ์ ์๋๋ก ์ ๊ณตํฉ๋๋ค.
์ ํจ์น๊ฐ ๋์ฐฉํ๋ฉด ์๋ฆผ์ ๋ฐ๊ฑฐ๋ ๋ฐํ๋ ๋ ์๋์ผ๋ก ์์ ๋ฉ๋๋ค.
์ค์นํด์ผํฉ๋๋ค. ๋ฉ์ผ ์์ด์ ํธ ์ด๋ฅผ ์ํํ๋ ค๋ฉด(์ต์ ๋ฒ์ 3.0)
๋ฉ์ผ๋ฆฌ์คํธ.U
์ด ์ ๋์ ๋ง๋ค๋ ค๋ฉด ๊ฐ์ธ End.U์ ?MAKE: ๋ผ์ธ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
๊ทธ๊ฒ์ผ๋ก ๊ตฌ์ฑ. ์ฌ์ฉ์์๊ฒ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ฅผ ๊ตฌ๋ ํ๊ฑฐ๋ ๊ตฌ๋ ์ทจ์ํ ์ ์๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
ํจํค์ง์ ๊ด๋ จ๋ ๋ ผ์๊ฐ ์งํ๋๋ ๊ณณ์ ๋๋ค. ๋น์ ์ ์คํํด์ผํฉ๋๋ค ํฉํค๋ํธ
๋ฉ์ผ๋ง ๋ฆฌ์คํธ ๊ด๋ จ ์ง๋ฌธ์ ๋ตํ์ฌ ์ ์ ํ ๋ณ์๋ฅผ ์ค์ ํ์ธ์.
ํจํค์ง ๋ณธ ์ฅ์น๊ฐ ์๋ํ๊ธฐ ์ ์.
๋ง์ด๋ํธ.U
์ด ์ฅ์น๋ฅผ ๊ฐ์ธ์ฉ์ผ๋ก ๋ณต์ฌํ์ธ์. U ์ผ๋ถ์ ์์ ์ ๊ธฐ๋ณธ๊ฐ์ ์ถ๊ฐํ๋ ๋๋ ํ ๋ฆฌ
๋ด๋ถ ๋ณ์. ์ด ์ฅ์น๋ ๊ตฌ์ฑ ๊ฒฐ๊ตญ ๊ธฐ๋ณธ๊ฐ
์ด๊ธฐํ๊ฐ ์๋ฃ๋์์ต๋๋ค.
๋ง์ด๋ฆฌ๋.์
์ด ์ฅ์น๋ ๋ด ์ฑ ์์ ์ ์ํํ๊ธฐ ์ํด ์์ค๋ก ์ ๊ณต๋์ด์ผ ํ๋ ์ ์คํฌ๋ฆฝํธ
์ฝ๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ ์ด์ค์ผ์ดํ, ๊ธฐ๋ณธ ํ ๋น ๋ฐ ๋งค๊ฐ๋ณ์ ํ๊ฐ๋ฅผ ํ์ฉํฉ๋๋ค.
Instruct.U ์ ๋์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค. ๋ํ -d ์ ํ๊ถ,
๋๋จธ์ง ์คํฌ๋ฆฝํธ ์คํ์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ณธ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, $rp ์ง๋ฌธ์ ํ๊ณ ์์ด์ผ ํ๋ฉฐ $dflt ๊ธฐ๋ณธ๊ฐ์ ํฌํจํด์ผ ํฉ๋๋ค
๋ต๋ณ. ์ง๋ฌธ์ ์คํฌ๋ฆฝํธ ์์ฒด์ ์ํด ์ธ์๋๊ณ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ฉ๋๋ค.
FBI ์ฆ์ค ๋ฒ์ฃ ๋ณด๊ณ ์ $ans ๋ณํ๊ธฐ ์ฌ์ด.
์ผ๋ฐ์ ์ธ ์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
dflt='y'
rp='์ง๋ฌธ?'
. ./myread
๊ฐ="$ans"
์์ธํ ๋ด์ฉ์ ์ฅ์น ์์ฒด๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ฌ๋์ปจํผ๊ทธ.U
์ด ์ ๋์ ์ผ๋ถ ์ ๋์ด ์๋ํ ๋ ์ข ์์ฑ ?MAKE: ๋ผ์ธ์ ์ผ๋ถ์ฌ์ผ ํฉ๋๋ค.
์ด์ ๊ธฐํธ ๊ฐ์ ์ฌ์ฌ์ฉํฉ๋๋ค. ์ด ๋จ์๋ ์ด์ ๋ต๋ณ์ ์ป๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
์ config.sh ๋๋ ํน์ ํ๋ซํผ์์ ์คํํ ๋ ์ ์ฉํ ํํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฒ์์ผ๋ก. ์ฐธ์กฐ ๊ตฌ์ฑ ํํธ ํํธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋จ๋ฝ์ ์ฐธ์กฐํ์ธ์.
์ ๋์ฌ.U
์ด ์ฅ์น์ ๋ชฉ์ ์ ์ค์น ์ ๋์ฌ ๋๋ ํฐ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ต๋ณ์์ ์ ํฉํ ๊ธฐ๋ณธ๊ฐ์ ์๋์ผ๋ก ๋ค์ ๊ณ์ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ค์์ ์์กดํฉ๋๋ค
๊ฐ์น $oldprefix ์ด์ ์ ๋์ฌ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ณด์ ํ๋ ๋ณ์
๋ณ๊ฒฝ๋๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋น์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ๋์ฌ๊ฐ ๋ค์์์ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ /๊ณ ๋ฅด๋ค ์
/ usr / local, ์ด์ ๋ฐ์ด๋๋ฆฌ ์ค์น ๋๋ ํฐ๋ฆฌ๊ฐ ๋ค์์์ ๋ณ๊ฒฝ๋ฉ๋๋ค.
/์ต์ /๋น ์ / usr / local / bin, ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ณ๊ฒฝ๋์ง ์์ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. /ํฐ ์์.
๋น์ ์ ์ ํํด์ผํฉ๋๋ค ์ธํธ ๋ฐํํ๊ธฐ ์ ์ ํ๊ฐ on $prefixit๊ฐ์ :
dflt var [๋๋ ํฐ๋ฆฌ] ์ค์
ํ๊ฐ $prefixit
์ด๋ ๊ฒ์ด ์ค์ ๋ ๊ฒ์ธ๊ฐ $dflt ์ $var or $์ ๋์ฌ/๋๋ ํฐ๋ฆฌ ์ ๋์ฌ๊ฐ ๋จ์ ์๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ
๊ฐ๋ ์๋๋ . ๋ง์ฝ์ DIR ๋ฌธ์์ด์ด๋ค ์์, ๋จ์ผ ๊ณต๊ฐ ๊ฐ $dflt ๋ค์๊ณผ ๊ฐ์ด ์ ์ง๋ฉ๋๋ค.
์ ๋์ฌ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๋ง์ฝ์ DIR ์๋ต๋ ๋ค์ $dflt ๋น์ผ๋ก ์ค์ ๋์ด ์์ต๋๋ค
์ ๋์ฌ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๋ฌธ์์ด $var ๊ทธ๋ ์ง ์์ผ๋ฉด.
์ ๋์ฌ.U
์ด ์ฅ์น์ ์๋๋ Prefixit.U์ ์๋์ ์ ์ฌํฉ๋๋ค. ์ฆ, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ ๋์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ ๋ฌธ์์ด์ ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ณ์ $prefixup,
ํ๊ฐ ์ ~name ํ์ฅ๋ง ๋ณต์ํ๋ฉฐ ์ ๋์ฌ์ ์ด๋ฌํ ์ด์ค์ผ์ดํ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ธฐ๊ตฌ. ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ์ธ์:
dflt ์ค์
ํ๊ฐ $prefixup
๋ฉ์์ง๋ฅผ ํ์ํ๊ธฐ ์ ์ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ ์๋ฅผ ๋ค์ด. ์ ๋์ฌ๊ฐ ~name์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ
ํ์ฅํ๋ฉด ์์ ์์ ์ ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค. y ๊ฐ๋ณ์ ์ด์ฃ , ๋น์ฐํ.
Typedef.U
์ด ์ฅ์น๋ $typedef ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ ๋ณ์ ๊ตฌ์ฑ ํ์ธํ๋
typedef๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ. ์ผ๋ฐ์ ์ธ ์ฉ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
typedef val_t ๊ธฐ๋ณธ๊ฐ ์ค์ [ ํฌํจ ]
ํ๊ฐ $typedef
์ด๋ ๊ฒ ํ๋ฉด ๋ณ์๊ฐ ์ค์ ๋ฉ๋๋ค. val_t ๊ฐ์น์ ๋ํดํธ ๊ฐ typedef๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ
๋์ด๋ ํฌํจ ํ์ผ ์ค ๋๋ ํ์ ์ ์ ๋ฐ๊ฒฌ๋๋ฉด. ํฌํจ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ
์ง์ ํ๋ฉด ์ฅ์น๊ฐ ๋ค์์ ์ฐพ์ต๋๋ค. ์ค์ง. ์ผ๋ถ ํฌํจ์ ์ง์ ํ๋ฉด
๊ทธ๊ฒ๋ค์ด ๋ณด์ ๋๋ค.
์ ๋์ค.U
์ด ๋จ์์ ๋ชฉ์ ์ ๋ณ์๋ฅผ ํตํด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ UNIX-ism ์ค ์ผ๋ถ๋ฅผ ์ ์ํ๋ ๊ฒ์ ๋๋ค.
๋ช ๋ น์ค์ด๋ ์ ์ ํ ํํธ ํ์ผ์ ํตํด ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํนํ,
$_exe, $_o ๊ณผ $_a ์ค์ ๋์ด ์์ต๋๋ค. ๋ชจ๋ ๋จ์๋ ์ฐธ์กฐํด์ผํฉ๋๋ค $_o ๊ทธ๋ฆฌ๊ณ ํ์ง .o ์ง์ .
'.' ์ด ๋ณ์์ ์ผ๋ถ์ ๋๋ค.
Setvar.U
์ด ์ฅ์น๋ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ณ์๋ฅผ ์์ฑํฉ๋๋ค. ๊ตฌ์ฑ ์ค์
๋ฐํ๋ค/undef ํน์ ๊ธฐํธ์ ๋ํ ๊ฐ, ๊ฐ์๊ธฐ ๋ณ๊ฒฝ๋๋ฉด ๊ฒฝ๊ณ ํ์
์ด์ ๊ฐ์์. ์๋ฅผ ๋ค์ด:
val="$define"
d_๋ณ์ ์ค์
ํ๊ฐ $setvar
์ด์ ์ ๊ฒฝ์ฐ $d_๋ณ์ ๊ฐ์ด null์ด ์๋๊ณ $๊ฐ ๋ฌ๋ผ์, "์"
๊ฒฝ๊ณ ๊ฐ ๋ฐ๋ น๋ฉ๋๋ค.
์.์
์ด ์ฅ์น๋ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด๋ ์คํฌ๋ฆฝํธ ๊ฐ์น ๋ณ์์
๋๊ตฌ์ ์ด๋ฆ์ $var ์ด์ ์ ๋ณด์ ํ๋ ๊ฐ๊ณผ ๋์ผํ์ง ์์ต๋๋ค. $์ด์๋ค. ์
๋ฐํ, $td ๊ณผ $tu ์ ์ ํ ๊ฐ์ ์ ์ง ๋ฐํ๋ค or ์ธ๋ฐํ ๋ณ์. ๋ณด๋ค
์ ์ Inlibc.U.
๋นํธ์ธ ์ ์ฒ๋ฆฌ๊ธฐ
ํฌํจ๋ ๊ฐ ๋จ์ ๊ตฌ์ฑ ๋ด์ฅ๋ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํตํด ์คํ๋ฉ๋๋ค. ์ฌ์
ํ๋ก์ธ์ ๋ช ๋ น๋ฌธ์ '@' ๋ฌธ์๋ก ์์๋ฉ๋๋ค('#'์ ์ ์ฃผ์์ ๋๋ค).
์ฑ๊ฒฉ). C ์ ์ฒ๋ฆฌ๊ธฐ์ฒ๋ผ ์๋ํ์ง๋ง ์๊ณผ ํ์ ํ์ฉํฉ๋๋ค.
ํ์ถํ๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@๋ง์ฝ์ ํํ
If ํํ true์ธ ๊ฒฝ์ฐ @end, @elsif ๋๋ @else๊น์ง ์ฝ๋๋ฅผ ๊ณ์ ๋ก๋ํฉ๋๋ค.
@์์ํ ํํ
๋์ฒด ์ ํ. ๋ง์ฝ์ ํํ true์ธ ๊ฒฝ์ฐ @end๊น์ง ์ฝ๋ ๋ก๋๋ฅผ ๊ณ์ํฉ๋๋ค.
๋ ๋ค๋ฅธ @elsif ๋๋ @else.
@else @if๊ฐ ๋ก๋๋๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ฝ๋ ํํ ๊ฑฐ์ง์ด์๊ณ ๊ทธ ์ด๋ ๊ฒ๋
์ ํ์ @elsif๊ฐ ์ผ์นํฉ๋๋ค. @end๊น์ง ๋ก๋ํฉ๋๋ค.
@end @if๋ก ์ฐ ์กฐ๊ฑด๋ถ ๋ก๋ฉ ๋ฌธ์ ๋ซ์ต๋๋ค.
@์ ์ํ๋ค ์์ง
์ ์ฒ๋ฆฌ๊ธฐ์๊ฒ ๋ค์๊ณผ ๊ฐ์ด ์๋ ค์ค๋๋ค. ์์ง ์ง๊ธ๋ถํฐ ์ ์๋ฉ๋๋ค.
์กฐ๊ฑด๋ถ ํํ ๊ธฐํธ ์ด๋ฆ์ ํฌํจํ ์ ์์ต๋๋ค(๊ธฐํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ฐ์ true์ ๋๋ค.
์ ์๋ฅผ ํตํด @์ ์ํ๋ค ๋๋ ์/ํ์ด ์ด์ค์ผ์ดํ๋ฉ๋๋ค. ์ด ์์๋ค์ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ฒฐํฉ๋ ์ ์์ต๋๋ค.
์ ํต์ ์ธ ๋ถ์ธ ์ฐ์ฐ์ '!' ๋ถ์ ์ ๊ฒฝ์ฐ '&&', ๋ ผ๋ฆฌ and์ ๊ฒฝ์ฐ '||' ๋ ผ๋ฆฌ์ ์ธ ๊ฒฝ์ฐ
๋๋.
๋จ์ผ ๊ดํธ ์์ ์๋ ํ ์คํธ๋ ์ ํ ์คํธ์ด๊ณ , ์ด์ค ๊ดํธ ์ฌ์ด์ ํ ์คํธ๋ ์ ธ ํ ์คํธ์ ๋๋ค.
ํ ํ ์คํธ. ์ฆ, ํํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{ ๊ป์ง ๋ณธ๋ฌธ }
{{ ํ ๋ณธ๋ฌธ }}
๋ค์๊ณผ ๊ฐ์ด ๋ฒ์ญ๋ฉ๋๋ค:
if ๊ป์ง ๋ณธ๋ฌธ >/dev/null 2>&1; ๊ทธ๋ฐ ๋ค์ 0์ ์ข ๋ฃํ์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด 1๋ฒ ์ถ๊ตฌ; fi
if (ํ ๋ณธ๋ฌธ) {์ถ๊ตฌ 0;} ๊ทธ๋ ์ง ์์ผ๋ฉด {์ถ๊ตฌ 1;}
์ข ๋ฃ ์ํ๋ ๋ถ์ธ ๊ฐ์ ์ป๊ธฐ ์ํด ํ์ค ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ฆ, 0์ true์ด๊ณ
๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๊ฑฐ์ง์ ๋๋ค. Perl์์๋ ๊ฐ๋จํ ์กฐ๊ฑด๋ง ํํํ ์ ์์ต๋๋ค.
์ผ๋ถ ๋ณต์กํ ์ฝ๋๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค. ๋ฉํ ๊ตฌ์ฑ ๊ทธ๋ฆฌ๊ณ ์คํ๋์์ต๋๋ค.
๋ด์ฅ๋ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ถ ์ฅ์น๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ ์ ์์ต๋๋ค(์ฐธ์กฐ: d_gethname.U A์ ๋ํ
๋ณต์กํ ์) ํ๋ก๊ทธ๋จ์ด๋ ํ์ผ์์ ์ค์ ๋ก ์ฌ์ฉํ๋ ๊ธฐํธ์ ๋ฐ๋ผ ๋ค๋ฆ
๋ฐฐํฌํ์ ์กด์ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋์ปจํผ๊ทธ.U ๋ค์๊ณผ ๊ฐ์ ํ ์คํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@if {test -d ../ํํธ}
๊ณผ ๊ตฌ์ฑ ํํธ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ํํธ ์ข ์ ์ฝ๋๋ฅผ ํฌํจํฉ๋๋ค. ํํธ ์ ๋๋ ํ ๋ฆฌ
ํจํค์ง์ ์ต์์ ๋๋ ํ ๋ฆฌ. ํ ์คํธ๋ '.์ฐ' ๋๋ ํ ๋ฆฌ,
๋ฐ๋ผ์ ํ ์คํธ์ '../'๊ฐ ํ์ํฉ๋๋ค.
๊ธฐํธ๊ฐ ์กด์ฌํ์ง ์์ ๋ ์ธ๋ชจ์๋ ์ฝ๋๋ฅผ ๋ฃ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
ํ์ ๋. ํ๋ ์ด์์ ๊ธฐํธ๋ฅผ ์ ์ํ๋ ๋จ์๋ ๊ทธ๋ฐ ์์ผ๋ก ๋ณดํธ๋ ์ ์์ต๋๋ค(๋จ์๊ฐ ๋ค์๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค).
@if/@end ์ ๋ด์์ ๊ธฐํธ ์ข ์ ์ฝ๋๋ฅผ ์์งํ์ฌ ์ ์ฒด์ ์ผ๋ก ๋ก๋๋ฉ๋๋ค. ์ ์ํ
์:
@if I_TIME || I_SYS_TIME || I_SYS_TIME_KERNEL
need_time_h='true'
@๋ ๋ค๋ฅธ
need_time_h='false'
@์ข ๋ฃ
์์ค ์ฝ๋๊ฐ ์ ์ดํ๋ โโ์ธ ๊ฐ์ง ๊ธฐํธ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋์ง ์ฌ๋ถ๋ฅผ ํ ์คํธํฉ๋๋ค.
์ ์, ์๊ฐ.h or sys/time.h ์ด์ ๋ฐ๋ผ ์ ๊ธฐํธ๋ฅผ ํฌํจํ๊ณ ์ ์ํ์ญ์์ค. ๊ทธ๊ฒ์ ์ค๋ค
๊ตฌ์ฑ ์์ค์ ํ์ํ ์ฌํญ์ ๋ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ ์์ ์ผ๋ก ์ธํ ๋จ์ ์ ๋ฐฉ์งํฉ๋๋ค.
๋๋ ๋จ์.
'?W:' ์ค์ ํตํด ํฅ๋ฏธ๋ก์ด ์กฐํฉ์ ์ป์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์์ดํ์.์ ๋จ์
C ์์ค๊ฐ ๋ค์์ ์ฌ์ฉํ๋์ง ์ฌ๋ถ๋ฅผ ์์์ผ ํฉ๋๋ค. ๊ตฌ์กฐ์ฒด ์๊ฐ๋ ์ ํ. ๊ทธ๋ฌ๋ฏ๋ก,
๋ผ์ธ :
?W::์๊ฐ๋
๊ธฐํธ๋ฅผ ์ ์ํ๋ ๋ถ์์ฉ์ ์ฌ์ฉ๋ฉ๋๋ค. ์๊ฐ๋ ์ ์ฒ๋ฆฌ๊ธฐ์ ๋ํ ๊ฒ์ ๋๋ค. ๊ทธ๋งํผ
๊ทธ๋ฌ๋ฉด ๋จ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํ ์ ์์ต๋๋ค.
@if ์๊ฐ๋
'-DS_TIMEZONE' ''์ s_timezone์ ๋ํด; ํ๋ค
@๋ ๋ค๋ฅธ
s_timezone=''
@์ข ๋ฃ
... s_timezone์ ์ฌ์ฉํ๋ ์ฝ๋ ...
@if ์๊ฐ๋
ํ
@์ข ๋ฃ
๋ ๊ฐ์ ์ฐ์ ๊ฐ์ ์๋ํ๋ ์ถ๊ฐ ๋ฃจํ๊ฐ ์์ต๋๋ค. s_timezone ๊ฐ๋ณ์ ์ด์ง๋ง ๋จ์ง
ํ์ํ ๊ฒฝ์ฐ.
์๋์ ๋ค ๋จ์ด์ง ๊ธฐํธ
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐํธ๋ ์ด์ ๊ธฐํธ๋ก ์ฝ๊ฒ ์ ํํ ์ ์๋๋ก ๋ณด์กด๋ฉ๋๋ค. ๋ฉํ ๊ตฌ์ฑ ๋จ์. ํ์ง ์๋ ํ
์ ์, -o ์ค์์น๊ฐ ์ ๋ฌ๋ฉ๋๋ค. ๋ฉํ ๊ตฌ์ฑ ๊ทธ๋ค์ ๋ฌด์๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋์ ๋ค ๋จ์ด์ง ํ์ผ์
์์ฑ๋์ด ์ด๋ค ํ์ผ์ด ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง, ๋ฌด์์ ์ฌ์ฉํ๋์ง ์๋ ค์ค๋๋ค.
์ฌ์ฉํ ์๋ก์ด ๊ธฐํธ์ ๋๋ค.
๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐํธ์ ์๋ช ์ ํ๋์ ์ ์ฒด ๊ฐ์ ํ์ ๋๋ค. ์ฆ, ํด๋น ๊ธฐํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ ๊ฑฐ๋ฉ๋๋ค.
๋ค์ ๊ธฐ๋ณธ ๊ฐ์ ํ์ด ๋ฐํ๋ฉ๋๋ค(ํจ์น ์ ๊ทธ๋ ์ด๋๋ ๋ฌผ๋ก ํฌํจ๋์ง ์์). ๊ทธ๋ฌ๋ฏ๋ก ๊ทธ๊ฒ์
๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์์ค๋ฅผ ๋ฒ์ญํ๊ณ ์๋ก์ด ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํ๋ช ํฉ๋๋ค.
๊ตฌ์ฑ ํํธ
๋ด๋ถ ๊ตฌ์ฑ ๋ ผ๋ฆฌ๊ฐ ์๋ชป๋ ์ ํ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ ์ํ
์๋ฅผ ๋ค์ด ์ผ๋ถ ํ๋ซํผ์์๋ vfork () ์์คํ ํธ์ถ์ด ์กด์ฌํ์ง๋ง ์์๋์์ผ๋ฏ๋ก ์ด๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
์ฌ์ฉํ ์ ์์ต๋๋ค. ํด๋น ์ง์์ ๋จ์ ์์ฒด์ ํฌํจ์ํค๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ ๊ณต๊ธ์ ์ฒด๊ฐ ๊ฒฐ๊ตญ ํด๊ฒฐํ๊ฒ ๋ ์ผ์์ ์ธ ๋ฌธ์ ์ผ ์๋ ์๊ณ ,
์๋ก์ด OS ์ ๊ทธ๋ ์ด๋๋ก ๋์ ๋์์ต๋๋ค.
์ด์จ๋ ์์คํ ์ ๋๋ฌด ํน์ ์ ์ธ ์์ ๋ฌธ์ ๋ค์ ๋ํด์๋ ๋ฉํ ๊ตฌ์ฑ
ํํธ ํ์ผ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํํธ ์ ๋๋ ํ ๋ฆฌ
ํจํค์ง์ ์ต์์ ๋๋ ํ ๋ฆฌ์ด๋ฉฐ ์คํ ์ ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ์ต๋๋ค. ๋ฉํ ๊ตฌ์ฑ. ๊ทธ๋ฌ๋ฉด
ํํธ ๊ด๋ จ ๋ถ๋ถ ์ฌ๋์ปจํผ๊ทธ.U.
๊ทธ๋๋ถํฐ ์ผ๋ถ ์ ๋ณ์๋ฅผ ๋ฏธ๋ฆฌ ์ค์ ํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ OS ํน์ ์์ ์ฌ์ฉ
.sh ํ์ผ. ์ฝ๋๊ฐ ๋ค์ด์์ต๋๋ค ์ฌ๋์ปจํผ๊ทธ.U ์ด๋ค ํํธ ํ์ผ์ด ํ์ํ์ง ์ถ์ธกํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์์คํ OS ์ด๋ฆ, ์ปค๋ ์ด๋ฆ, ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ค ์ด๋ฆ์ ๊ณ์ฐํฉ๋๋ค.
๋ฒํธ ๋ฑ... ์ด ์ ๋ณด๋ ๊ธ๋ณํ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋กํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ. ์ฝ๋๋ฅผ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋งํด์ผ ํฉ๋๋ค. ์ฌ๋์ปจํผ๊ทธ.U.
ํจํค์ง๋ฅผ ์ฒ์ ๋ฆด๋ฆฌ์คํ ๋ ํํธ ํ์ผ ๋๋ ํฐ๋ฆฌ๋ ๋น์ด ์์ด์ผ ํฉ๋๋ค. ๋ง์ฝ
ํจํค์ง ์ฌ์ฉ์๊ฐ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋ถํํฉ๋๋ค. ๊ตฌ์ฑ ๊ธฐ๋ณธ๊ฐ์
ํน์ ์์คํ ์ ๊ฒฝ์ฐ ์ด๊ฒ์ด ํ๋ซํผ ํน์ ๋ฌธ์ ์ธ์ง ์๋๋ฉด
์ผ๋ฐ ๊ฒ. ์ ์์ ๊ฒฝ์ฐ์๋ ์๋ก์ด ํํธ ํ์ผ์ ์๊ฐํ ์๊ฐ์ ๋๋ค.
ํ์์ ๊ฒฝ์ฐ ํด๋น ๋จ์๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, SGI ์์คํ ์ ์์๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค. vfork () ์์คํ ํธ์ถ, ์ด๊ฒ์ผ๋ก
๊ธ์ฐ๊ธฐ. ํด๋น ํํธ ํ์ผ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. sgi.sh. ๋ฐ๋ผ์ ๋น์ ์ด ํด์ผ ํ ์ผ์ ๋ง๋ค๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
a ํํธ/sgi.sh ๋น์ ์ด ์ฐ๋ ํ์ผ :
d_vfork="$define"
ํญ์ ๋ค์ ๋งคํ๋ฉ๋๋ค vfork on ํฌํฌ (์ฐธ์กฐ d_vfork.U). SGI ์์คํ ์์ ์คํํ ๋
์ฒ์์ผ๋ก, ๊ตฌ์ฑ ์์์ ๊ฐ์งํ๊ฒ ๋ฉ๋๋ค. ํํธ/sgi.sh ํ์ผ์ด ์๊ณ ํ์ฌ ์งํ ์ค์ธ ์์ ์
IRIX ๋จธ์ (์ปค๋ ์ด๋ฆ์ ๋๊ฐ /irix์)์ด๋ฏ๋ก ๋ค์์ ์ ์ํฉ๋๋ค. SGI ๋ฑ
๊ฐ๋ฅํ ํํธ. ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์๋ฝํ ๊ฒฝ์ฐ, ์ดํ $d_vfork ๊ฐ์ ๋ค์์ ํตํด ์์ ๋ฉ๋๋ค.
$์ธํธ๋ฐ ์ ํํด, ์ ์! ๊ฐ์ ์ฌ์ ์ํ๋ ค๊ณ ํ๋ค๋ ๊ฒ์ ๊ฒฝ๊ณ ํ๊ธฐ ์ํด ๋ด๋ณด๋ด์ง๋๋ค.
์ ์ํด ๊ณ์ฐ ๊ตฌ์ฑ.
์ ๊ณตํ ํ์๋ ์์ต๋๋ค. ๋ชจ๋ ์๋ ค์ง ํํธ ์ฌ๋์ปจํผ๊ทธ.U. ํํธ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ
๋๋ฝ๋ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ์ ํ์ผ๋ก ์ ์๋์ง ์์ต๋๋ค. ํด๋ฆฌ์คํฑ ํ ์คํธ๋ ๊ณ์ฐ์ ์ํด ์คํ๋์์ต๋๋ค.
๊ฐ๋ฅํ ํํธ ํ๋ณด๋ ๋ถ์์ ํฉ๋๋ค. ์๋ก์ด ๊ฐ์ด๋ ๋ค๋ฅธ ํ ์คํธ๊ฐ ์๋ ๊ฒฝ์ฐ
๋ํํ ๋ณด๋ด์ค...
์ฌ์ ์ ์ ํ
๋น์ ์ด ๋ง๋๋ ๊ฒฝ์ฐ ๊ตฌ์ฑ.์ค๋ฒ ์ต์์ ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ, ๊ตฌ์ฑ ๋น์ ์ด ๋ฌผ์ด๋ณผ ๊ฒ์ ๋๋ค
๊ธฐ๋ณธ๊ฐ์ ๋ฌด์ํ๊ธฐ ์ํด ๋ก๋ํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ ์์ฑ ์ ์ ์ํ๋ฉ๋๋ค.
config.sh ํ์ผ์ ์ ์ฅ๋ ๊ฐ์ ํจ์นํ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด๋ ์ฌ์ฉ์๊ฐ ์ ์ฅํ๋ ๋ก์ปฌ ํ์ผ์ด๋ผ๋ ์ ์์ ํํธ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋ค๋ฆ ๋๋ค.
์์ ์ ์ฉ๋์ ๋ง๊ฒ ์์ ๋กญ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฌํ ํ์ผ์ ์ง์ ์ ๊ณตํด์๋ ์ ๋์ง๋ง,
์ฌ์ฉ์๋ ์ด ๊ฐ๋ฅ์ฑ์ ๋ํด ์๊ณ ์์ต๋๋ค.
๊ตฌ์ฑ ์ต์
XNUMXD๋ดํ์ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ๋ ๋ช ๋ น์ค์ ์ง์ ๋ ์ผ๋ถ ์ต์ ๊ณผ ํจ๊ป ํธ์ถ๋ ์ ์์ต๋๋ค.
๋์์ ์ฝ๊ฐ ์์ ํฉ๋๋ค. ํ์ฉ๋๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-d ๋ชจ๋ ๋ต๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ์ธ์.
-e ์ ์ ๊ณผ์ ์ ์ง๋ ์ง๋ฌธ ์์ด ์งํํ์ธ์. config.sh.
-f ํ์ผ ์ง์ ๋ ํ์ผ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์ด ์ค์์น๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด
๊ตฌ์ฑ์ ๋ค์์์ ๊ฐ์ ธ์ต๋๋ค. config.sh, ์กด์ฌํ ๋.
-h ๋์๋ง ๋ฉ์์ง๋ฅผ ์ธ์ํ๊ณ ์ข ๋ฃํฉ๋๋ค.
-r ๊ฐ๋ฅํ๋ฉด C ๊ธฐํธ ๊ฐ์ ์ฌ์ฌ์ฉํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๋น์ฉ์ด ๋ง์ด ๋๋ ์์ ์ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. nm ์์ง
์ถ์ถ. ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ(์ด์ ๊ตฌ์ฑ ํ์ผ ์์ด)
๊ตฌ์ฑ ์ ๋ํด ์๊ธฐ ์ํด ์์ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ๊ณ ๋งํฌํ๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
๊ธฐํธ์ ์กด์ฌ ๋๋ ๋ถ์ฌ.
-s ๋ฌด์ ๋ชจ๋. ํ์ผ ์ค๋ช ์ #4์ ์ธ์๋ ๋ฌธ์์ด๋ง
ํ๋ฉด(์ค์ํ ๋ฉ์์ง์ ๋๋ค). ์์ ํ ๋ ์๋ ์์ต๋๋ค
์ด๋ค ์ถ๋ ฅ์ด๋ ์ฌ์ฉํ ์ ์์ง๋ง '๊ตฌ์ฑ -ders > / dev / null 2> ๋ฐ 1' ๊ฐ๋ ์ฐจ๋ค
์ถ๋ ฅ์ด๋ ์ฌ์ฉ์ ์ํธ ์์ฉ์ด ํ์ํ์ง ์์ ์ผ๊ด ์คํ์ ๋๋ค.
-D ๊ธฐํธ=๊ฐ
์ฌ์ ์ ์ ์์ง ์ง์ ๋ ๊ฒ์ ๊ฒฌ๋๋ค ๊ฐ์น. '๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.-D
์์ง' ๊ธฐ๋ณธ๊ฐ์ธ 'define'์ ์ฌ์ฉํฉ๋๋ค.
-E ๊ตฌ์ฑ ์ง๋ฌธ์ด ๋๋๋ฉด ์ค์งํ์ธ์.
config.sh. ์ด ์์ ์ ''์ ์ํํ์ง ์์ต๋๋ค.ํ์ธ ๋ฐ๋ผ' ๋๋ .SH ํ์ผ ์ถ์ถ.
-K ์ง์์ด ํ๋ถํ ์ฌ์ฉ์. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ํ์ฌ ์ํ ์ค์ธ ์์ ๊ณผ
๋ฐ๋ผ์ config.sh ํ์ผ์ ํญ์ ์๋๋ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ธ๊ณ ์์คํ ์์ ์์ฑ๋์์ ์๋ ์์ง๋ง ์ฌ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ค๋จ์ ๋ฐฉ์งํฉ๋๋ค. ๊ตฌ์ฑ ์ฌ์ฉํ ์ ์๋ C ์ปดํ์ผ๋ฌ ๋๋ ์๋ชป๋ ์ธํธ๋ฅผ ๊ฐ์งํฉ๋๋ค.
C ํ๋๊ทธ ์ค. ์ด ์ต์ ์ ํตํด ์ถ๊ฐ ๋จ์ถํค๋ฅผ ์ผค ์๋ ์์ต๋๋ค.
๋ฏธ๋. ์ด ์ต์ ์ ๋ค์ ๋ฌธ์์ ์ค๋ช ๋์ด ์์ต๋๋ค. ๊ตฌ์ฑ ์ฌ์ฉ๋ฒ ๋ฉ์์ง, ์ฐ๋ฆฌ์๊ฒ ์๊ธฐ์ํค๊ธฐ ์ํด
๊ทธ๋ฌ๋ ์ฃผ์ด์ง ์ค๋ช ์ ์ถฉ๋ถํ ๋น๋ฐ์ค๋ฌ์ธ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.
:-)
-O ๋ค์์ ํตํด ์ง์ ๋ ๊ฐ์ ํ์ฉํฉ๋๋ค. -D or -U ๋ก๋๋ ๋ชจ๋ ์ค์ ์ ์ฌ์ ์ํ๋ ค๋ฉด
๊ตฌ์ฑ ํ์ผ. ์ฌ์ ์๋ ๊ธฐ๋ณธ ๋์์ด ์๋๋๋ค.
ํ์ฌ ๋ณ๊ฒฝ ์ค์ธ ๋ณ์์์ ํ์๋ ๋ณ์๋ก ์ ํ๋์ง ์์ต๋๋ค.
์์ด ์์ฐ์ค๋ฝ๊ฒ -O, ๊ตฌ์ฑ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ค์ ์ด ์ํ๋ฉ๋๋ค.
๋ฏธ๋ถ๋ณ์๊ฐ ์์ง ๊ณ์ฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์์ ํฉ๋๋ค...
-S ๋ชจ๋ .SH ํ์ผ์ ๋ํด ๋ณ์ ๋์ฒด๋ฅผ ์ํํฉ๋๋ค. ์ ๊ฒฐํฉํ ์ ์์ต๋๋ค.
-f ์ํ๋ ๊ตฌ์ฑ์ ์ ํํ๋๋ก ์ ํํ์ธ์.
-U ๊ธฐํธ=
์ฌ์ ์ค์ ์์ง ๋น ๊ฐ์ ๊ฐ์ต๋๋ค. '๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.-U ์์ง'
์ด๋ ๊ฒ์ด ์ค์ ๋ ๊ฒ์ธ๊ฐ ์์ง 'undef'๋ก.
-V ๋ฒ์ ๋ฒํธ๋ฅผ ์ธ์ํ์ธ์. ๋ฉํ ๊ตฌ์ฑ ์ด๊ฒ์ด ์ด๊ฒ์ ์์ฑํ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ
์ข ๋ฃํ์ญ์์ค.
๋ฌ๋ฆฌ๋ ํ๊ฒฝ
์์ํ๋ฉด, ๊ตฌ์ฑ ๋ก์ปฌ์ ์์ฑํฉ๋๋ค UU ๋๋ ํ ๋ฆฌ์์ ์คํ๋ฉ๋๋ค. ๋๋ ํ ๋ฆฌ
๊ตฌ์ฑ์ด ์ข ๋ฃ๋๋ฉด ์ ๊ฑฐ๋์ง๋ง ์ด๋ ๋ค์ ์์น์์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
์ฆ, ์ฝ๊ธฐ ์ ์ฉ ํ์ผ ์์คํ ์ด ์๋ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋น์ ์ ์คํํ ์ ์์ต๋๋ค ๊ตฌ์ฑ ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์๊ฒฉ์ผ๋ก:
../ํจํค์ง/๊ตฌ์ฑ
๋ก์ปฌ์ ์กด์ฌํ์ง ์๋ ์์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์์ฑ๋ ๋ชจ๋ ํ์ผ์ ๋ค์ ์์น์ ์ ์ฅ๋ฉ๋๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ์คํ ์ค์ธ ๋๋ ํฐ๋ฆฌ์ ๋๋ค. ์ด ๋ง๋ฒ์ src.U ๋๋ถ์ ์ด๋ฃจ์ด์ก์ต๋๋ค.
์ค์ ํ๊ณ ์๋ ์ ๋ $src ๊ณผ $rsrc ํจํค์ง ์์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ์์ ๋๋ค. ์ ๊ฒ
๊ฒฝ๋ก๋ ์ ์ฒด ๋๋ ์๋ ๊ฒฝ๋ก์ธ์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๊ตฌ์ฑ ์ ์ฒด ๋๋
์๋ ๊ฒฝ๋ก.
๋ด์์ UU ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค $rsrc ์์ค ํ์ผ์ ์ก์ธ์คํ๋ ค๋ฉด(๋จ์
์์ค ํ์ผ ๋งํฌ ํํธ๋ฅผ ์ฐธ์กฐํ ๋ ํญ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํด์ผ ํ๋ฉฐ
ํ์ผ์ ์์ ๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค). ๋ชจ๋ Makefile์ $src ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋น๋ ๋๋ ํฐ๋ฆฌ ์๋จ์ ์์ค์ ๋ํ ํฌ์ธํฐ(์ฌ๊ธฐ์ ๊ตฌ์ฑ ์คํ๋จ),
์ง์ ๋๋ VPATH ์ค์ ์ ํตํด.
๋ฌ๋ฆฌ๊ธฐ ์ค์ผ ๋ ๊ตฌ์ฑ ์๊ฒฉ์ผ๋ก .SH ํ์ผ์ ๋น๋ ๋๋ ํฐ๋ฆฌ์์ ์ถ์ถ๋ฉ๋๋ค.
์์ค ํธ๋ฆฌ์์. ๊ทธ๋ฌ๋ ์ด๋ฅผ ์ํด์๋ ์ผ์ข ์ ํ์ธ ์ปดํ์ผํ ์ ์๋๋ก ์ง์
์์ค๋ ๋ค๋ฅธ ๊ณณ์ ์์ง๋ง ๋น๋ ๋๋ ํ ๋ฆฌ์ ์๋ ๊ฒ์ ๋๋ค.
์ฌ์ฉ ๋ง๋ฒ ์ฌ์ ์
๋ฅผ ํ์ฉํ์ฌ -M ์ ํํ๋ฉด ์ผ๋ถ ๋งค์ง ์ฌ๋งคํ์ด confmagic.h
ํ์ผ. ํด๋น ํ์ผ์ ๋ค์์ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๊ตฌ์ฑ.h๋ฌผ๋ก , ํ์ง๋ง ๊ฒฐ๊ตญ์๋
๋ค๋ฅธ ํ์ํ ํฌํจ ํ์ผ. ์ฆ:
#include "config.h"
...
... other ํฌํจ ...
...
#include "confmagic.h"
์ผ๋ฐ์ ์ผ๋ก, confmagic.h ๋ค์ ๋งคํํ๋ ค๊ณ ์๋ํฉ๋๋ค ๋น๋ณต์ฌ() on memcpy () ์๋๋ผ๋ฉด ๋น๋ณต์ฌ() is
๋ก์ปฌ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฑฐ๋ ๋ณํ ๊ฐ๋ฅ vfork ์ผ๋ก ํฌํฌ ํ์ํ ๊ฒฝ์ฐ์๋ ์ธ๋ชจ๊ฐ ์๊ฒ ๋ง๋ญ๋๋ค.
~์ ๋ํด ์ ๊ฒฝ์ฐ๋ค HAS_VFORK ์์ง.
์ด ๊ตฌ์ฑ ๋งค์ง์ ์ฉ์ด์ง ํ์ผ์ ์ค๋ช ๋์ด ์์ต๋๋ค.
๋จ์ Canva์ ์ ์๋ ์ฑ๋์ํธ ํ ํ๋ฆฟ์
๋จ์ ํ ํ๋ฆฟ ์ธํธ๊ฐ ์์ต๋๋ค. ๋ฉํ ๊ตฌ์ฑ ์์ค ๋๋ ํ ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค์ํ ์ข ๋ฅ์ ์๋ก์ด ๋จ์๋ฅผ ์ ์ํ๊ฒ ์์ฑํ๊ธฐ ์ํด (์์ง ์์ฑ๋์ง ์์) ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ํฉ. ์ด ๋ฏธ์์ฑ ํ๋ก์ ํธ์ ๋ํ ๋ฌธ์๋ ์์ง๋ง ์ธ๊ธํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ง์ ํด๋ณด๊ณ ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด ๋งค๋ด์ผ ํ์ด์ง์์...
์๊ฐ
๋๋ฆฌ ์[์ด๋ฉ์ผ ๋ณดํธ]> ๋ฒ์ 2.0์ ๊ฒฝ์ฐ.
ํ ๋ ์คํ [์ด๋ฉ์ผ ๋ณดํธ]> ์ค์ํ ์ ๋ ํ์ฅ์ ๊ฒฝ์ฐ.
๋ผํ์ ๋งํ๋ ๋[์ด๋ฉ์ผ ๋ณดํธ]>.
๊ทธ ์ธ ๋ง์ ๊ธฐ์ฌ์๋ค ๋ฉํ ๊ตฌ์ฑ ๋จ์. ๋ชฉ๋ก์ ์ ์ฉ ํ์ผ์ ์ฐธ์กฐํ์ธ์.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ์ผ๋ก Metaconfig ์ฌ์ฉ