Super Kawaii Cute Cat Kaoani g++, gcc 차이 및 gcc 옵션들

기타

g++, gcc 차이 및 gcc 옵션들

치킨고양이짱아 2023. 9. 13. 14:21
728x90
728x90

파이썬만 쓰다가 오랜만에 c++ 실습준비하려니까 헷갈려서 정리해봤다.

gcc, g++ 차이

1. gcc

  • .c, .cpp 파일을 각각 c언어, c++ 언어로 컴파일한다.
  • c 라이브러리와 링크된다.

2. g++

  • .c, .cpp 파일을 모두 c++ 언어로 컴파일한다.
  • c++ 라이브러리와 링크된다.

3. 결론

c++ 언어로 작성된 .cpp 파일을 gcc를 사용해 컴파일 할 시 gcc가 .cpp 파일을 컴파일 한 후에 c 라이브러로 링크하기 때문에 링크에러가 발생할 수 있다. 즉 .cpp 파일은 g++을 사용해 컴파일하자!

 

g++ 옵션들

g++ -c <file(*.cpp)> : file을 가지고 object 파일 생성

g++ -o <실행 파일> <file1(*.o)> <file2(*.o)>... : file1과 file2를 링킹 후 <실행파일> 생성

 

Makefile 작성 규칙

makefile 작성 규칙은 다음과 같다.

목표파일 : 목표파일을 만드는데 필요한 구성요소들
(tab)목표를 달성하기 위한 명령 1
(tab)목표를 달성하기 위한 명령 2

위의 규칙과 g++ 옵션들을 사용해 Makefile을 작성해보자.

hello_world: main.o print.o 
	g++ -o hello_world main.o print.o 
main.o: main.cpp 
	g++ -c main.cpp
print.o: print.cpp
	g++ -c print.cpp
clean:
	rm hello_world main.o print.o
  • hello_world를 생성하기 위해 필요한 object 파일은 main.o, print.o이다. 또한 main.o, print.o를 사용해 hello_world라는 이름의 실행파일을 만드는 명령어는 g++ -c hello_world main.o print.o이다.
  • main.o라는 object 파일을 만들기 위해 필요한 파일은 main.cpp이고 main.cpp를 사용해 main.o라는 object 파일을 만드는 명령어는 g++ -c main.cpp이다.
  • print.o라는 object 파일을 만들기 위해 필요한 파일은 print.cpp이고 print.cpp를 사용해 print.o라는 object 파일을 만드는 명령어는 g++ -c print.cpp이다.

마지막 clean 부분은 더미타겟이라고 하는데, 이 부분은 파일을 생성하지 않는 개념적인 타겟으로

$ make clean

라고 명령하면 현재 디렉토리의 모든 object 파일들과 생성된 실행파일인 hello_world를 삭제하게 된다.

728x90
728x90