Makefile ๊ธฐ์ดˆ

2023. 4. 11. 01:08ยทํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ๊ธฐ์ดˆ

 

โœ… ๊ธฐ๋ณธ

 
makefile ์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํŒŒ์ผ ํ•˜๊ฒŒ ๋ ๋•Œ๋Š” gcc/g++๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค.
 
  • gcc -c main.c usa.c kor.c
  • gcc -o app.out main.o usa.o kor.o
 
์—ฌ๊ธฐ์„œ ๋˜‘๋˜‘ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋ฆฌ๋ˆ…์Šค๋Š”
 
  • gcc -o app.out main.c usa.c kor.c
 
๋ฅผ ํ†ตํ•ด ์œ„ ๋‘๊ณผ์ •์„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
 
 
 

โœ… Makefile ๋งŒ๋“ค๊ธฐ

 
TARGET : DEPENDENCY
    command
 
 
  • TARGET์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” DEPENDENCY๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • command ๋ช…๋ น์„ ํ†ตํ•ด TARGET์„ ๋งŒ๋“ ๋‹ค.
 
 
โœ”๏ธ ex1) ๊ธฐ๋ณธ์ ์ธ Makefile ์ฒซ ๊ตฌ์„ฑ (main.c kor.c usa.c → app.out)
 
app.out : main.o kor.o usa.o
    gcc -o app.out main.o kor.o usa.o
 
main.o :
    gcc -c main.c
 
kor.o :
    gcc -c kor.c
 
usa.o :
    gcc -c usa.c
 
 
 
 
โœ”๏ธ ex2) all์˜ ๊ฐœ๋…(๊ฒฐ๊ตญ ๋„ˆ๊ฐ€ ๋งŒ๋“ค๊ณ  ์‹ถ์€๊ฒŒ ๋ญ๋ƒ, all์ด ์—†์œผ๋ฉด ๊ฐ€์žฅ ์ฒ˜์Œ์˜ ๋ช…๋ น๋งŒ ์‹คํ–‰์‹œํ‚จ๋‹ค. ์ฆ‰ app.out : XXXX์ด ๊ฐ€์žฅ ๋ฐ‘์— ์žˆ๋Š” ๊ฒฝ์šฐ main.o : ๋งŒ ์‹คํ–‰์‹œํ‚ฌ ๊ฒƒ์ด๋‹ค)
        ๋”ฐ๋ผ์„œ all์„ ์จ์ค€๋‹ค.(make ๋ช…๋ น์–ด๋กœ ์‹คํ–‰์‹œํ‚ค๋ฉด Makefile์˜ all์„ ๊ฐ€์žฅ ๋จผ์ € ์ฐพ์•„๊ฐ„๋‹ค.)
 
all : app.out
 
app.out : main.o kor.o usa.o
    gcc -o app.out main.o kor.o usa.o
 
main.o :
    gcc -c main.c
 
kor.o :
    gcc -c kor.c
 
usa.o :
    gcc -c usa.c
 
 
 
 
โœ”๏ธ ex3) ๋ณ€์ˆ˜ ์‚ฌ์šฉ
 
CC = gcc
TARGET = app.out
OBJS = main.o kor.o usa.o
 
all : $(TARGET)
 
$(TARGET) : $(OBJS)
    $(CC) -o $(TARGET) $(OBJS)
 
main.o :
    $(CC) -c main.c
 
kor.o :
    $(CC) -c kor.c
 
usa.o :
    $(CC) -c usa.c
 
 
 
 
โœ”๏ธ ex4)์ง€์ •์ž ์‚ฌ์šฉ( $@: Target์„ ์˜๋ฏธ, $^: Dependency๋ฅผ ์˜๋ฏธ - ์•„๋ž˜ ์˜ˆ์ œ์—์„œ $^๋Š” $OBJ๋ฅผ ๋œปํ•จ)
        (.c.o๋Š” Makefile์ด ์œ„์น˜ํ•œ ๊ณต๊ฐ„์˜ cํŒŒ์ผ์„ ๋ชจ๋‘ objectํŒŒ์ผ๋กœ ์ปดํŒŒ์ผํ•˜๊ฒ ๋‹ค ๋ผ๋Š” ์˜๋ฏธ)
        ($(CC) -o $@ $< ๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ๋œ cํŒŒ์ผ์— ๋Œ€ํ•ด์„œ gcc -o app.out๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ๋‹ค ๋ผ๋Š” ์˜๋ฏธ -> main.o : / kor.o / usa.o ๋Š” ์—†์–ด๋„ ๋จ)
 
 
CC = gcc
TARGET = app.out
OBJS = main.o kor.o usa.o
 
all : $(TARGET)
 
$(TARGET) : $(OBJS)
    $(CC) -o $@ $^
 
.c.o:
    $(CC) -c -o $@ $<
 
 
 
 
โœ”๏ธ ex5) CFLAGS์™€ LDFLAGS ์‚ฌ์šฉ
        (CFLAGS๋Š” ์ปดํŒŒ์ผ ์˜ต์…˜์ด๋‹ค.  -Wall -g -o ๋Š” ๋ชจ๋“  warning์„ ๋ณด๊ฒ ๋‹ค, ๋””๋ฒ„๊น… ์˜ต์…˜, ์ตœ์ ํ™” ์˜ต์…˜ )
        (LDFLAGS๋Š” ๋งํฌ ์˜ต์…˜์ด๋‹ค. ๋ณดํ†ต ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์ •ํ•œ๋‹ค. -lopenssl ์€ openssl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๊ฒ ๋‹ค)
 
 
CC = gcc
TARGET = app.out
OBJS = main.o kor.o usa.o
 
CFLAGS = -Wall -g -o
LDFLAGS = -lopenssl
 
all : $(TARGET)
 
$(TARGET) : $(OBJS)
    $(CC) $(LDFLAGS) -o $@ $^
 
.c.o :
    $(CC) $(CFLAGS) -c -o $@ $<
 
 
 
 
โœ”๏ธ ex6) ๋งˆ๋ฌด๋ฆฌ(clean → make clean ์ธ์ž๋ฅผ ์ค˜์„œ ๋ชฉ์ ํŒŒ์ผ๊ณผ ํƒ€๊ฒŸํŒŒ์ผ์„ ์ง€์›€, ๋ฆฌ๋นŒ๋“œ ๋ชฉ์ )
 
 
CC = gcc
TARGET = app.out
OBJS = main.o kor.o usa.o
 
CFLAGS = -Wall -g
LDFLAGS = -lopenssl
 
all : $(TARGET)
 
$(TARGET) : $(OBJS)
    $(CC) $(LDFLAGS) -o $@ $^
 
.c.o:
    $(CC) $(CFLAGS) -c -o $@ $<
 
clean :
    rm -f $(OBJS) $(TARGET)
 
 
  • -L๊ณผ -l์˜ ์ฐจ์ด์ 
  • Makefile ์˜ˆ์ œ
 
 
์ถœ์ฒ˜: ์‹œ๊ณจ์‚ฌ๋Š” ๊ฐœ๋ฐœ์ž

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด > C++ ๊ธฐ์ดˆ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[C/C++] 8. ๋ฐ˜๋ณต๋ฌธ(์‹ฌํ™”)(feat. iterator, predicate, lambda)  (0) 2023.04.22
[C/C++] 7. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ(windows/linux)  (2) 2023.04.11
[C/C++] 6. ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ(Entry point)(feat. argc/argv)  (0) 2021.04.05
[C/C++] 5. ๋ฐ˜๋ณต๋ฌธ(Iteration statements) - while๋ฌธ(while loop)  (0) 2021.04.03
[C/C++] 4. ๋ฐ˜๋ณต๋ฌธ(Iteration statements) - for๋ฌธ(for loop)  (0) 2021.03.29
'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ๊ธฐ์ดˆ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [C/C++] 8. ๋ฐ˜๋ณต๋ฌธ(์‹ฌํ™”)(feat. iterator, predicate, lambda)
  • [C/C++] 7. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ(windows/linux)
  • [C/C++] 6. ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ(Entry point)(feat. argc/argv)
  • [C/C++] 5. ๋ฐ˜๋ณต๋ฌธ(Iteration statements) - while๋ฌธ(while loop)
์„œ์•„๋ž‘๐Ÿ˜ƒ
์„œ์•„๋ž‘๐Ÿ˜ƒ
Just Do It๐Ÿ’ช
  • ์„œ์•„๋ž‘๐Ÿ˜ƒ
    G-Stack
    ์„œ์•„๋ž‘๐Ÿ˜ƒ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (144)
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (78)
        • C++ ๊ธฐ์ดˆ (28)
        • C++ ์‘์šฉ (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ & ์šด์˜์ฒด์ œ (31)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (12)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • ๋””์ž์ธํŒจํ„ด (5)
      • ์„œ๋น„์Šค & ํˆด (7)
      • ํŠธ๋ Œ๋“œ&์ด์Šˆ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • G์Šคํƒ์˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    cpu
    ๋””์ž์ธํŒจํ„ด
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ๋ฐ˜๋ณต๋ฌธ
    Thread
    ์Šคํƒ
    ์žฌ๊ท€
    ๋ฐฐ์—ด
    init
    ํ•จ์ˆ˜
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ํ•˜๋“œ๋””์Šคํฌ
    pointer
    ๋ณ€์ˆ˜
    STD
    ๋ฉ”๋ชจ๋ฆฌ
    ์ปดํ“จํ„ฐ
    ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ
    c++
    ํŒจํ‚ค์ง€
    ํŒŒ์ผ์ž…์ถœ๋ ฅ
    ํŒŒ์ด์ฌ
    ํฌ์ธํ„ฐ
    RAM
    c
    go
    ์กฐ๊ฑด๋ฌธ
    fork
    component
    ์ƒ์†
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
์„œ์•„๋ž‘๐Ÿ˜ƒ
Makefile ๊ธฐ์ดˆ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”