TIL_21.01.25 ๐๐ฝโโ๏ธ๐๐ฝโโ๏ธ
cs50
์ปดํ์ผ๋ง
#include <stdio.h>
int main(void)
{
print("hello, world\n");
}
#include <stdio.h>
int main(void)
{
print("hello, world\n");
}
printf
ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ stdio.h
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ค.
c์ธ์ด๋ก ์์ฑ๋์ด ์์ผ๋ฉฐ ํ์ผ๋ช
์ด .h๋ก ๋๋๋ ํ์ผ์ด๋ค.
์ฌ๊ธฐ์๋ printf
ํจ์์ ํ๋กํ ํ์
์ด ์์ด clang
์ปดํ์ผ๋ฌ๊ฐ ์ปดํ์ผํ ๋ ๋ฌด์์ธ์ง ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ค.
make
๋ clang
์ ์ฌ์ฉํด์ ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ๋ค ๊ฐ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.
- ์ ์ฒ๋ฆฌ
- ์ปดํ์ผ๋ง
- ์ด์ ๋ธ๋ง
- ๋งํน
์ ์ฒ๋ฆฌ(Precompile)
์ปดํ์ผ ๊ณผ์ ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ด๋ฉฐ ์ ์ฒ๋ฆฌ๊ธฐ์ ์ํด ์ํ๋๋ค.
#
์ผ๋ก ์์๋๋ C ์์ค ์ฝ๋๋ ์ ์ฒ๋ฆฌ๊ธฐ์๊ฒ ์ค์ง์ ์ธ ์ปดํ์ผ์ด ์ด๋ฃจ์ด์ง๊ธฐ ์ ์ ๋ฌด์ธ๊ฐ๋ฅผ ์คํํ๋ผ๊ณ ์๋ ค์ค๋ค.
์๋ฅผ๋ค์ด #include
๋ ์ ์ฒ๋ฆฌ๊ธฐ์๊ฒ ๋ค๋ฅธ ํ์ผ์ ๋ด์ฉ์ ํฌํจ์ํค๋ผ๊ณ ์๋ ค์ค๋ค.
์ปดํ์ผ(Compile)
์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ ์ฒ๋ฆฌํ ์์ค ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ปดํ์ผ์ด ์ด๋ฃจ์ด์ง๋ค.
์ปดํ์ผ๋ฌ๋ C ์ฝ๋๋ฅผ ์ด์
๋ธ๋ฆฌ์ด๋ผ๋ ์ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ปดํ์ผํ๋ค.
์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด์ ์ต๋ํ ๊ฐ๊น์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๊ณผ์ ์ด๋ค.
์ด์ ๋ธ(Assemble)
์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ก ์ปดํ์ผ๋๋ฉด ๊ทธ ํ์ ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ์ค๋ธ์ ํธ ์ฝ๋๋ก ๋ณํํ๋ ๊ณผ์ ์ด๋ค. CPU๊ฐ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ์ํํด์ผ ํ๋์ง ์ ์ ์๋ ๋ช ๋ น์ด ํํ์ธ ์ฐ์๋ 0๊ณผ 1๋ก ๋ฐ๊ฟ์ฃผ๋ ์์ ์ด๋ค.
๋งํฌ(Link)
ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฌ๊ฐ์ ํ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ด ํ๋์ ์ค๋ธ์ ํธ ํ์ผ๋ก ํฉ์ณ์ผํ๋ค๋ฉด ๋งํฌ๋ผ๋ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๋ค.
๋๋ฒ๊น
๋ฒ๊ทธ๋ ์ฝ๋์ ๋ค์ด์๋ ์ค๋ฅ์ด๋ค. ๋ฐ๋ผ์ ๋ฒ๊ทธ๋ฅผ ์ก๋ ๋๋ฒ๊น ๊ณผ์ ์ ํ์์ ์ด๋ค. ๋๋ฒ๊ฑฐ๋ breakpoint๋ฅผ ์ด์ฉํด ํน์ ํ์์ ํ๋ก๊ทธ๋จ์ ๋ฉ์ถ ์ ์๋ค.
cs50์ ์งํํ๋ฉด์ help50์ ์ฌ์ฉํ ์ ์๋ค. ์ปดํ์ผ์ ์๊ธฐ๋ ์ค๋ฅ๋ฅผ ํด์ํด์ค๋ค.
int main(void)
{
printf("hello, world\n");
}
//โimplicitly declaring library function 'printf'โ
help50 make filename
ํ์ง๋ง ๋ ผ๋ฆฌ์ ์ค๋ฅ์ ์์ธ์ ์ฐพ๊ธฐ ์ํด์๋ help50์ ๋์์ ๋ฐ์ ์๋ ์๋ค.
๋ฐ๋ผ์ ๋ฐฉ๋ฒ์ 2๊ฐ์ง๊ฐ ์๋ค.
-
printf
์ผ์ผ์ด ๊ฐ์ ์ถ๋ ฅํ์ฌ ์๋ฌ์ ์์ธ์ ํ์ธํ ์ ์๋ค. ํ์ง๋ง ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์๋ ์๋ค. -
debug50
CS50 IDE๋ฅผ ์ฌ์ฉํ๋ฉด debug50์ด๋ผ๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ ์ ์๋ค.
debug50 filename
์ผ๋ก ์คํํ๋ฉด ์ค๋ฅธ์ชฝ ํจ๋์ด ๋์ค๊ณ ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(TIL_21.01.25 ๐๐ฝโโ๏ธ๐๐ฝโโ๏ธ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kdo0129/TIL21.01.25์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค