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
'기타' 카테고리의 다른 글
singularity definition file 작성하고 container 만들어 코드 실행시키기 (0) | 2023.10.11 |
---|