본문 바로가기
코딩/기타 코딩 노트

g++ 컴파일러 사용하기

by 디어솔 2024. 9. 6.
반응형

g++ 은 오픈소스 c++ 컴파일러이다. GNU Compiler Collection (GCC) 의 일부로, 주로 Linux와 같은 유닉스 계열 시스템에서 사용된다. 다양한 옵션을 통해 컴파일러 동작을 제어할 수 있고, 옵션은 아래와 같다.

 

1. -o [output] : 실행 파일의 이름 지정

  • 예시: g++ -o myprogram source.cpp

 

2. -c : 링킹 없이 개별 오브젝트 파일 생성

  • 예시: g++ -c source.cpp

 

3. -Wall : 컴파일 시 발생할 수 있는 대부분의 경고를 활성화

  • 예시: g++ -Wall source.cpp

 

4. -g

디버깅 정보를 포함하여 컴파일한다. 디버거(gdb 등)에서 프로그램을 디버깅할 때 사용된다.

  • 예시: g++ -g source.cpp

 

5. -O[n]

최적화 옵션이다. n은 최적화 수준을 나타내며, 0에서 3까지 지정할 수 있다.

  • -O0: 최적화를 하지 않음 (기본값).
  • -O1, -O2, -O3: 점차 높은 최적화 수준.
  • 예시: g++ -O2 source.cpp

 

6. -std=[standard]

사용할 C++ 표준을 지정한다.

  • 예시: g++ -std=c++11 source.cpp
  • 사용할 수 있는 표준: c++98, c++03, c++11, c++14, c++17, c++20 등.

 

7. -L[path]

  • 링크 시 추가할 라이브러리 경로를 지정합니다. 외부 라이브러리를 사용할 때 라이브러리 위치를 지정하는 데 유용합니다.
  • 예시: g++ -L/usr/local/lib source.cpp

 

8. -I[path]

  • 헤더 파일을 찾을 경로를 지정합니다. 프로젝트에 포함된 헤더 파일이 표준 경로 외의 위치에 있는 경우 사용합니다.
  • 예시: g++ -I/usr/local/include source.cpp

 

9. -l[library]

  • 링크할 라이브러리를 지정합니다. -l 옵션 뒤에 라이브러리 이름을 붙이면, 컴파일러는 해당 라이브러리를 프로그램에 링크합니다.
  • 예시: g++ source.cpp -lm (여기서 -lm은 수학 라이브러리 libm을 링크함)

 

10. -shared

  • 공유 라이브러리를 생성할 때 사용됩니다. 동적 라이브러리를 만들고자 할 때 유용합니다.
  • 예시: g++ -shared -o libmylib.so source.cpp

 

11. -static

정적 링크를 강제하여 프로그램이 정적 라이브러리와 함께 컴파일되도록 한다.

  • 예시: g++ -static source.cpp

 

12. -fPIC

  • 포인터 독립적인 코드(PIC)를 생성하여 동적 라이브러리(공유 라이브러리)를 만들 때 사용합니다.
  • 예시: g++ -fPIC -shared -o libmylib.so source.cpp

 

13. -v

컴파일 과정을 자세하게 출력한다.

  • 예시: g++ -v source.cpp

 

14. -E

전처리만 수행하고 결과를 출력한다.

  • 예시: g++ -E source.cpp

 

15. -S

어셈블리 코드를 생성한다. 

  • 예시: g++ -S source.cpp

댓글