linux - KimTaebin-ai/study_posts GitHub Wiki

linux

์ปค๋„

์œ„ํ‚ค: ๋ฆฌ๋ˆ…์Šค/์ปค๋„

์†Œํ”„ํŠธ์›จ์–ด๋Š” ์šด์˜์ฒด์ œ์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šด์˜์ฒด์ œ๋Š” ์ปค๋„(Kernel) ๊ณผ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

์ปค๋„ ์€ ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ๋ถ€๋ถ„์œผ๋กœ์จ ์ฃผ๋กœ ๋””๋ฐ”์ด์Šค ๊ด€๋ฆฌ, ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ์‹œ์Šคํ…œ ์ฝœ ์ œ๊ณต ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋“ฑ ์ปดํ“จํ„ฐ ์ž์›์„ ๊ด€๋ฆฌํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ปค๋„์€ ํ•ญ์ƒ ์ปดํ“จํ„ฐ ์ž์›๋“ค๋งŒ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ์–ด ์‚ฌ์šฉ์ž์™€ ์ง์ ‘์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์€ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ์ด ์‹œ์Šคํ…œ ์ฝœ (System call API) ์ด๋‹ค.

image

์‹œ์Šคํ…œ ์ฝœ (System call)

์šด์˜์ฒด์ œ์—๋Š” ์œ ์ €๋ชจ๋“œ, ์ปค๋„๋ชจ๋“œ ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์œ ์ € ๋ชจ๋“œ์—์„œ ์‹œ์Šคํ…œ ์ฝœ์ด ํ˜ธ์ถœ์ด ๋˜๋ฉด, ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ปค๋„ ๋ชจ๋“œ๋กœ ์ „ํ™˜์ด ๋œ๋‹ค. ์ด๋ฅผ ๋ชจ๋“œ ์Šค์œ„์น˜(Mode Switch) ๋ผ ํ•˜๊ณ , ์šด์˜์ฒด์ œ๋Š” ์ปค๋„๋ชจ๋“œ์—์„œ ์‹œ์Šคํ…œ ์ฝœ์„ ์‹คํ–‰ ์‹œํ‚จ ํ›„ ๋‹ค์‹œ ์œ ์ € ๋ชจ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค.

๊ฐ ๋ถ„์•ผ ๋ณ„ ์‹œ์Šคํ…œ ์ฝœ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํ”„๋กœ์„ธ์Šค ์ œ์–ด: fork(), exit(), wait(),
  • ํŒŒ์ผ ๊ด€๋ฆฌ: open(), read(), write(), close()
  • ์žฅ์น˜ ๊ด€๋ฆฌ: ioctl(), read(), write()
  • ์ •๋ณด ์œ ์ง€: getpid(), alarm(), sleep()
  • ๋ณด์•ˆ(Protection): chmod(),umask(), chown()

์—ฌ๋‹ด์œผ๋กœ unistd.h ํ—ค๋”ํŒŒ์ผ์—์„œ ์ •์˜๋œ write ํ•จ์ˆ˜๋„, ์ด ์ปค๋„์˜ ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ํ•จ์ˆ˜์ด๋‹ค.

unistd.h ํ•จ์ˆ˜

์ปค๋„์˜ ์—ญํ• 

image

์ปค๋„์˜ ๊ฐ€์žฅ ํฐ ๋ชฉํ‘œ๋Š” ์ปดํ“จํ„ฐ์˜ ๋ฌผ๋ฆฌ์ ( ํ•˜๋“œ์›จ์–ด ) ์ž์› ๊ณผ ์ถ”์ƒํ™” ์ž์›์„ ๊ด€๋ฆฌ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฌผ๋ฆฌ์  ์ž์› ๊ด€๋ฆฌ: ์ปค๋„์€ CPU, ๋ฉ”๋ชจ๋ฆฌ, ์ €์žฅ ์žฅ์น˜, ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์นด๋“œ ๋“ฑ ํ•˜๋“œ์›จ์–ด ์ž์›์„ ์ง์ ‘ ์ œ์–ดํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ํ•˜๋“œ์›จ์–ด๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋„๋ก ์Šค์ผ€์ค„๋งํ•˜๊ณ  ์กฐ์œจํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค

์ถ”์ƒํ™” ์ž์› ๊ด€๋ฆฌ: ์ปค๋„์€ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ ์ž์›์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ํ•˜๋“œ ๋””์Šคํฌ๋ฅผ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ, ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ, ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ, ๋„คํŠธ์›Œํฌ ์†Œ์ผ“ ๋“ฑ๋„ ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” ์ถ”์ƒํ™” ์ž์›์— ํ•ด๋‹น.

์ถ”์ƒํ™”๋œ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐ ์‚ฌ์šฉ์ž๋“ค์ด ๋ณธ์ธ์ด ํ•˜๋‚˜์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋…์ ํ•˜์—ฌ ํ™œ์šฉ ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋Š๋‚„ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌผ๋ฆฌ์  ์ž์›์ธ ํ•˜๋“œ์›จ์–ด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์›Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•˜๊ธฐ๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌผ๋ฆฌ์  ์ž์›์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก "์ปค๋„"์ด ํ•„์š”.

man์„ ํ†ตํ•œ ์ •๋ณด ์กฐํšŒ

๋กœ์ปฌ ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ ์ฐธ๊ณ  ๋ฌธ์„œ๋“ค์„ ์ด์šฉํ•˜์—ฌ ํŠน์ • ๋ช…๋ น์ด๋‚˜ ์ž์›๋“ค์˜ ๋ฉ”๋‰ด์–ผ์„ ์ถœ๋ ฅํ•˜๋Š” ์˜์—ญ์œผ๋กœ ์œ ๋‹‰์Šค์—์„œ๋Š” ์ด 8๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋˜์–ด ์žˆ์œผ๋‚˜ ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋ถ€๋ถ„์ด ์ถ”๊ฐ€๋˜์–ด ์ด 9๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค๊ฐ€ ํŠน์ • ํ•จ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด man ์„ ํ†ตํ•ด ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

ex) man strlen ์ž…๋ ฅ ์‹œ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

$ man [options] [section] command

[SPACE]:  ํ•œ ํŽ˜์ด์ง€ ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ„๋‹ค
[ENTER]: ํ•œ ์ค„ ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ„๋‹ค. 
[b]: ์ „ ํŽ˜์ด์ง€๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค. 
[q]: man ๋ช…๋ น์„ ์ข…๋ฃŒํ•œ๋‹ค.

[k ํ‚ค์›Œ๋“œ]: ํ•ด๋‹น ํ‚ค์›Œ๋“œ๋กœ ๋ฐœ๊ฒฌ๋˜๋Š” ๋ชจ๋“  ๋งค๋‰ด์–ผ์˜ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ณด์—ฌ์ค€๋‹ค.
[f ํ‚ค์›Œ๋“œ]: ํ•ด๋‹น ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•œ ์™„๋ฒฝํžˆ ์ผ์น˜๋˜๋Š” ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
[w ํ‚ค์›Œ๋“œ]: man ๋ช…๋ น ์‹คํ–‰ ์‹œ์— ํ˜ธ์ถœ๋˜๋Š” '๋ฉ”๋‰ด์–ผ ํŽ˜์ด์ง€' ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.(--path)
[s, -S]: ํŠน์ • section์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (--sections=์„น์…˜๋ฒˆํ˜ธ)

image

gcc ๋นŒ๋“œ

gcc๋ž€, GNU ์ปดํŒŒ์ผ๋Ÿฌ ๋ชจ์Œ(GNU Compiler Collection, ์ค„์—ฌ์„œ GCC)๋Š” GNU ํ”„๋กœ์ ํŠธ์˜ ์ผํ™˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์–ด ๋„๋ฆฌ ์“ฐ์ด๊ณ  ์žˆ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค. ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ C/C++ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค.

1. ์ „์ฒ˜๋ฆฌ (Preprocessing)

  • ๋ช…๋ น์–ด: gcc -E source.c -o source.i
  • ์—ญํ• : ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„์—์„œ๋Š” #include, #define ๋“ฑ์˜ ์ „์ฒ˜๋ฆฌ ์ง€์‹œ๋ฌธ์ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ํ—ค๋” ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํฌํ•จ์‹œํ‚ค๊ณ  ๋งคํฌ๋กœ๋ฅผ ํ™•์žฅํ•˜๋ฉฐ, ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ(#ifdef, #ifndef)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์ „์ฒ˜๋ฆฌ๋œ ์†Œ์Šค ํŒŒ์ผ (source.i)

2. ์ปดํŒŒ์ผ (Compilation)

  • ๋ช…๋ น์–ด: gcc -S source.i -o source.s
  • ์—ญํ• : ์ „์ฒ˜๋ฆฌ๋œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ๋Š” ์ฝ”๋“œ๊ฐ€ CPU๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ €์ˆ˜์ค€ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ ํŒŒ์ผ (source.s)

3. ์–ด์…ˆ๋ธ” (Assembly)

  • ๋ช…๋ น์–ด: gcc -c source.s -o source.o
  • ์—ญํ• : ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ฐœ๋ณ„์ ์ธ ๋ชฉ์  ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชฉ์  ํŒŒ์ผ์€ ์•„์ง ์™„์ „ํ•œ ์‹คํ–‰ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ฉฐ, ๋‹ค๋ฅธ ๋ชฉ์  ํŒŒ์ผ์ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ์—ฐ๊ฒฐ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ๋ชฉ์  ํŒŒ์ผ (source.o)

4. ๋งํฌ (Linking)

  • ๋ช…๋ น์–ด: gcc source.o -o executable
  • ์—ญํ• : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชฉ์  ํŒŒ์ผ(.o)์„ ์—ฐ๊ฒฐํ•˜๊ณ  ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ๊ฒฐํ•ฉํ•˜์—ฌ ์ตœ์ข…์ ์ธ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๋‹ค๋ฅธ ์†Œ์Šค ํŒŒ์ผ์˜ ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋“ค์ด ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์‹คํ–‰ ํŒŒ์ผ (executable)

์ „์ฒด ๋นŒ๋“œ ๊ณผ์ •

  • ๋ช…๋ น์–ด: gcc source.c -o executable
  • ์œ„์˜ ๋ช…๋ น์–ด๋Š” ์†Œ์Šค ํŒŒ์ผ(source.c)์„ ์ปดํŒŒ์ผํ•˜๊ณ  ๋งํฌํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ •์„ ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ํ•˜์—ฌ ์ตœ์ข… ์‹คํ–‰ ํŒŒ์ผ(executable)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. GCC๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ž๋™์œผ๋กœ ๊ฑฐ์น˜๋ฉฐ, ๋‹จ๊ณ„๋ณ„๋กœ -E, -S, -c ๋“ฑ์˜ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋‹จ๊ณ„์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcc ๋นŒ๋“œ ์˜ต์…˜

  • -Wall: ์ผ๋ฐ˜์ ์ธ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • g: ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • O ๋˜๋Š” -O1, -O2, -O3: ์ฝ”๋“œ ์ตœ์ ํ™” ์ˆ˜์ค€์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • o <ํŒŒ์ผ๋ช…>: ์ถœ๋ ฅ ํŒŒ์ผ๋ช…์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • I<๋””๋ ‰ํ† ๋ฆฌ>: ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ—ค๋” ํŒŒ์ผ์„ ์ฐพ์„ ์ถ”๊ฐ€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • L<๋””๋ ‰ํ† ๋ฆฌ>์™€ -l<๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ช…>: ๋ง์ปค๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์„ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

-Wall, -Wextra, -Werror ๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ์—๋Ÿฌ๋ฅผ ์žก๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

  • -Wall: ์ผ๋ฐ˜์ ์ธ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋„๋ก ์„ค์ •
  • -Wextra: -Wall ๋ณด๋‹ค ๋” ๋งŽ์€ ์ถ”๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ํ™œ์„ฑํ™”
  • -Werror: ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ์—๋Ÿฌ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ์˜ ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ์ˆ˜์ •ํ•˜๋„๋ก ๊ฐ•์ œํ•จ.

์ด ์˜ต์…˜๋“ค์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ , ๋ฒ„๊ทธ๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

gcc -D ์˜ต์…˜

gcc -D ์˜ต์…˜์€ ๋งคํฌ๋กœ๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ• gcc -D๋งคํฌ๋กœ์ด๋ฆ„[=๊ฐ’] ์†Œ์ŠคํŒŒ์ผ.c -o ์ถœ๋ ฅํŒŒ์ผ

Debian vs CentOS

๋ฆฌ๋ˆ…์Šค๋Š” ์˜คํ”ˆ์†Œ์Šค์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ˆ„๊ตฌ๋“  ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜์—ฌ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋งŽ์€ ๋ฒ„์ „์˜ ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์žˆ๋‹ค.

๋ˆ…์Šค๋Š” ๋ ˆ๋“œํ–‡(redhat)๊ณผ ๋ฐ๋น„์•ˆ(debian), ๋‘ ๊ฐ€์ง€ ๊ณ„์—ด์ด ์žˆ๋‹ค. ๋ ˆ๋“œํ–‡์€ ๋ ˆ๋“œํ–‡ ํšŒ์‚ฌ์—์„œ ๋ฐฐํฌํ•˜์—ฌ ํšŒ์‚ฌ์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํŒจ์น˜๊ฐ€ ๋น ๋ฅด๊ณ , ์œ ํ‹ธ๋ฆฌํ‹ฐ ์–‘์ด ๋งŽ๊ณ , ๊ด€๋ฆฌ ํˆด์˜ ์„ฑ๋Šฅ์ด ์ข‹์œผ๋ฉฐ, ํ˜ธํ™˜์„ฑ ๋˜ํ•œ ์ข‹์€ ํŠน์ง•์ด ์žˆ๋‹ค. ๋ฐ๋น„์•ˆ์€ ๋ ˆ๋“œํ–‡๋ณด๋‹ค ๋จผ์ € ์˜จ๋ผ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ œ์ž‘ํ•˜์—ฌ ๋ฐฐํฌํ–ˆ๋‹ค. ๋ฌด๋ฃŒ ๊ฐœ์ธ์‚ฌ์šฉ์ž ์„œ๋ฒ„์šฉ์œผ๋กœ ์ธ๊ธฐ๊ฐ€ ๋†’๊ณ , ์›น์‚ฌ์ดํŠธ๋‚˜ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์‚ฌ์šฉ๋ฒ•์ด ์ž์„ธํžˆ ๊ธฐ์ˆ ๋˜์–ด ์žˆ์–ด ์žˆ๋‹ค๋Š” ์ ์ด ์ง„์ž…์žฅ๋ฒฝ์„ ๋‚ฎ์ถ”์–ด ์ดˆ๋ณด ์œ ์ €๊ฐ€ ์ ‘๊ทผํ•˜๊ธฐ ์‰ฌ์šด ํŠน์ง•์ด ์žˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ๋ฒ„์ „์œผ๋กœ ๋ ˆ๋“œํ–‡์˜ ์„ผํ† ์Šค(CentOS), ๋ฐ๋น„์•ˆ์˜ ์šฐ๋ถ„ํˆฌ(Ubutu)๊ฐ€ ์žˆ๋‹ค.

CentOS

์„ผํ† ์Šค(CentOS, Community Enterprise Operating System)๋Š” ๋ ˆ๋“œํ–‡์ด ๊ณต๊ฐœํ•œ RHEL(Red Hat Enterprise Linux, ๋ ˆ๋“œํ–‡์ด ๊ฐœ๋ฐœํ•œ ์ปดํ“จํ„ฐ ์šด์˜์ฒด์ œ)๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ ˆ๋“œํ–‡์˜ ๋ธŒ๋žœ๋“œ์™€ ๋กœ๊ณ ๋งŒ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐฐํฌํ•œ ๋ฐฐํฌ๋ณธ์ด๋‹ค. RHEL์™€ ์™„๋ฒฝํ•˜๊ฒŒ ํ˜ธํ™˜๋˜๋Š” ๋ฌด๋ฃŒ ๊ธฐ์—…์šฉ ์ปดํ“จํŒ… ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์ง€๋งŒ, RHEL์ฒ˜๋Ÿผ ๋ณ„๋„์˜ ๊ธฐ์ˆ ์ง€์›์ด๋‚˜ ์„œ๋น„์Šค๋Š” ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.

๋ฌด๋ฃŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฌธ์ œ ๋ฐœ์ƒ์‹œ ๋ ˆ๋“œํ–‡์ด ์•„๋‹Œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ†ตํ•ด ์ง€์›๋˜๋ฏ€๋กœ ํŒจ์น˜๊ฐ€ ๋‹ค์†Œ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ฒ„์šฉ ์šด์˜์ฒด์ œ๋กœ ์ธ๊ธฐ๊ฐ€ ๋งค์šฐ ๋†’์•„ ๋Œ€๋ถ€๋ถ„ ์„œ๋ฒ„์šฉ ๋ฆฌ๋ˆ…์Šค๋ฅผ ์šด์˜ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์„ผํ† ์Šค๋Š” RPM ํŒจํ‚ค์ง€ ํ˜•์‹์œผ๋กœ, YUM๊ณผ DNF๋ฅผ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ์‚ฌ์šฉํ•œ๋‹ค. RPM์€ ํŒจํ‚ค์ง€ ์‚ฌ์ด์— ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ํŒจํ‚ค์ง€๊นŒ์ง€ ์ž๋™์œผ๋กœ ์„ค์น˜๋˜์ง€ ์•Š๋Š”๋‹ค.

Debian

๋ณด๋‹ค ์‰ฝ๊ฒŒ ์„ค์น˜์™€ ์ด์šฉ๋ฒ•์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์–ด ์ง„์ž…์žฅ๋ฒฝ์ด ๋‚ฎ์•„ ์ดˆ๋ณด์ž๋“ค์ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๋ฐ์Šคํฌํƒ‘์šฉ ๋ฆฌ๋ˆ…์Šค๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋ฅผ ์ปค๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฐ๋น„์•ˆ์˜ ํŠน์ง•์€ ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๋‹จ์ˆœํ•จ์— ์žˆ๋‹ค. DEB ํŒจํ‚ค์ง€ ํ˜•์‹์œผ๋กœ, dpkg์™€ APT๋ฅผ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ์‚ฌ์šฉํ•œ๋‹ค. DEB ํŒŒ์ผ ์•ˆ์— ์˜์กด์„ฑ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์–ด ํ•„์š”ํ•œ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๊ณ , ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ์™€ ์—ฐ๊ณ„ํ•˜์—ฌ ํŒจํ‚ค์ง€์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์˜์กด ํŒจํ‚ค์ง€๋ฅผ ์ž๋™์œผ๋กœ ๋ฐ๋น„์•ˆ์—์„œ ์šด์˜ํ•˜๋Š” ์™ธ๋ถ€ ์ €์žฅ์†Œ์—์„œ ๊ฐ€์ ธ์™€ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์— ๋น„ํ•ด ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•˜๋‹ค๋Š” ์  ๋“ฑ์ด ์žˆ๋‹ค. ์ผ๋‹จ ์„ค์น˜ ํ›„ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ธ APT ์—…๋ฐ์ดํŠธ ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ค์น˜๋‚˜ ์—…๋ฐ์ดํŠธ์—์„œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์™€์˜ ์˜์กด์„ฑ ํ™•์ธ, ๋ณด์•ˆ๊ด€๋ จ ์—…๋ฐ์ดํŠธ ๋“ฑ์„ ์ž๋™์œผ๋กœ ์„ค์ • ๋ฐ ์„ค์น˜ํ•ด์ค€๋‹ค.

์ฐจ์ด์  ์ •๋ฆฌ

image

์ปค๋ฉ˜๋“œ ๋ช…๋ น์–ด ์ฐธ๊ณ ์ž๋ฃŒ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ