언어/C++
c++20
newlibra
2025. 7. 1. 00:38
편하게 테스트할만한 툴
https://apps.kde.org/kdevelop/
KDevelop
Featureful, plugin-extensible IDE for C/C++ and other programming languages
apps.kde.org
** 디폴트로 빠른 컴파일 스크립트 변경 : g++ -std=c++23 -o %b %f && ./%b
g++ -std=c++20 test.cpp -o test
#include <iostream>
#include <string>
#include <format>
int main()
{
const std::string message {std::format("{},{}!", "hello", "world")};
std::cout << message ;
}
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
g++ 컴파일러 사용하기
g++ 은 오픈소스 c++ 컴파일러이다. GNU Compiler Collection (GCC) 의 일부로, 주로 Linux와 같은 유닉스 계열 시스템에서 사용된다. 다양한 옵션을 통해 컴파일러 동작을 제어할 수 있고, 옵션은 아래와 같
kimyaesol.tistory.com