์ค๋์ ์์นจ๋ถํฐ ๋น๊ฐ ๋ง์ด ์์ง๋ง ๊ฑฐ์ง๋ง์ฒ๋ผ ์ ์ฌ์ ๋ฅ๊ทผ ํด๊ฐ ๋ด๋ค.
์นํ ํ๋๋ค๊ป์ ๋ด ์ฑ๊ฒฉ์ ๋ํด ๊ฑฑ์ ๋์ด ๋ํ ์ข์ ๋ง์์ ๋ง์ด ํด์ฃผ์
จ๋๋ฐ ์ง๊ธ๊น์ง ์ด์์ค๋ ๋๋ฅผ ๋์๋ณด๋ฉฐ,
๋ด ์น์ ์ ๋ถ๋ด์ ๋๊ผ์ ๋๊ตฐ๊ฐ์๊ฒ ๋ฏธ์ํจ๊ณผ ์ฃ์ฑ
๊ฐ์ด ๋ค์๊ณ , ์์นจ์ ๋น๊ฐ ๋ด๋ฆฐ ๊ฒ์ฒ๋ผ ๋ฉํ์ด ํ๋ค๋ ธ๋ค.
ํ์ง๋ง ์งง์ ๊ณ ๋ฏผ์ ๋ง์น๊ณ '๋๋ ๋ด ์น์ ์ ๋ํ ๋ฌด๊ฒ๊ฐ์ ์ง์ด์ง๊ณ ,์ฑ
์์ง๊ฒ ๋ค.'๋ผ๋ ๋ง์๊ฐ์ง๊ณผ ํจ๊ป ๋น๊ฐ ๊ทธ์น๊ณ , ํด๊ฐ ๋จ๋ ๋ฏํ ๋๋์ ๋ฐ์๋ค.
2์๊ฐ ๋๊ฒ ์ข์ ๋ง์ํด์ฃผ์ ํ๋ ๋๋ถ(๋ฒํฌ์ญ,๋น์ฐ), ๋ฆ์๋ฐค ์ด์ผ๊ธฐํด์ค ์์ธ๋ฉ์ดํธ ์จ๋ ์๊ฒ ์ ๋ง ๊ฐ์ฌํ๊ณ , ์ฌ๋ํฉ๋๋ค๐ซก
'hello, world!'๋ฅผ ์ฒ์ ์ถ๋ ฅํ๋ ๋๋ฅผ ์์ง ๋ชปํ๋ค.๊ทธ ์ด์ ๋ ์จ ์ธ์์ด ์ฝ๋๋ก ๋ณด์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ด๊ฐ ์์ฑํ๋ 'hello, world'๋ผ๋ ์ฝ๋๋ 0 ๋๋ 1๋ก ํ์๋๋ ๋นํธ๋ค์ ์ฐ์์ด๊ณ , ๋ฐ์ดํธ๋ผ๋ 8๋นํธ ๋จ์๋ก ๊ตฌ์ฑ๋๋ค.
๊ฐ ๋ฐ์ดํธ๋ ํ๋ก๊ทธ๋จ์ ํ
์คํธ ๋ฌธ์๋ฅผ ๋ํ๋ธ๋ค.
๋ด๊ฐ ์ฒ์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ C์ธ์ด๋ค.
#include, int void ๋ฑ ์
๋ ฅํ ๊ฒ์ด ์ ๋ง ๋ง๋ค๋ ์๊ฐ์ด ๋ค์์๊ณ , ์ง๊ธ ํ์ด์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ธฐ์ ๋๋์ฑ ์ด๋ป๊ฒ ์ฌ์ฉํ์์ง๋ผ๋ ์๊ฐ์ด ๋ ๋ค.
C ์ธ์ด๋ '์ ๋์ค๋ฅผ ์ํ' ์ธ์ด์ด๋ค.
์์คํ
์์ค ํ๋ก๊ทธ๋จ์ ์ํด ์ ํ๋ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ํด๋์ค, ๊ฐ์ฒด, ์์ธ์ฒ๋ฆฌ๋ฅผ ์ง์ํ์ง ์๊ธฐ์ C++, Java์ ํฐ ์ฐจ์ด์ ์ด ์๋ค.
๋ด๊ฐ 'hello, world!'๋ฅผ ์
๋ ฅํ๋ 'hello.c'๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๋ฒ์ญ๋์ด ์ ๊ธ ๊ธฐ๊ณ์ด ์ธ์คํธ๋ญ์
๋ค๋ก ๋ณํ๋๋ค.
์ด ๊ณผ์ ์ ํฌ๊ฒ 4๊ฐ์ง ๋จ๊ณ๋ก ๋๋ ์ ์๋ค.
์ ์ฒ๋ฆฌ ๋จ๊ณ ( 'hello.c' -> 'hello.i' )
์ ์ฒ๋ฆฌ๊ธฐ(cpp) : #๋ฌธ์๋ก ์์ํ๋ ๋๋ ํฐ๋ธ์ ๋ฐ๋ผ ์์ ํ๋ค.
์๋ฅผ ๋ค์ด #include <stdio.h> -> stdio.h ํ๋ก๊ทธ๋จ ๋ฌธ์ฅ์ ์ง์ ์ฝ์
์ง์ํ๋ค.
์ปดํ์ผ ๋จ๊ณ ( 'hello.i' -> 'hello.s' )
์ปดํ์ผ๋ฌ(cc1) : 'hello.i'(text)๋ฅผ 'hello.s'(text)๋ก ์ด์
๋ธ๋ฆฌ์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฒ์ญํ๋ค.
์ด์
๋ธ๋ฆฌ ๋จ๊ณ ( 'hello.s' -> 'hello.o' )
์ด์
๋ธ๋ฌ(as) : 'hello.s'(text)๋ฅผ ๊ธฐ๊ณ์ด ์ธ์คํธ๋ญ์
์ผ๋ก ๋ฒ์ญํ๊ณ , ์ฌ๋ฐฐ์น ๊ฐ๋ฅ ๋ชฉ์ ํ๋ก๊ทธ๋จ(Relocatable object programs)์ ํํ๋ก ๋ฌถ์ด์ 'hello.o'(binary)๋ผ๋ ๋ชฉ์ ํ์ผ์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ค.
๋งํฌ ๋จ๊ณ ('hello.o' -> 'hello')
๋ง์ปคํ๋ก๊ทธ๋จ(ld) : 'printf.o' + 'hello.o' -> hello(binary) ์คํ ํ์ผ์ด ๋๋ค.
ํํ์ '๋ฑ๋'
๋์๊ฒ ์ ๋ฌผํ๋ ๋
ธ๋.
์ค๋ ์ฒ์ ๋ค์๋๋ฐ ๋ฒ์จ 10๋ฒ์ ๋๊ฒ ๋ค์ ๊ฒ ๊ฐ๋ค.