SO 생성
MakeFile
g++ [옵션]
전처리기(cpp0) 옵션
| 명령어 | 설명 |
|---|
| -I | 헤더 파일을 디렉토리 지정 |
| -L | 라이브러리 디렉토리 지정 |
| --includes | 소스 파일 지정 |
라이브러리 지정 옵션
| 명령어 | 설명 |
|---|
| -static | 정적 라이브러리 링크 |
| -shared | 공유 라이브러리 링크, 존재하지 않으면 정적 라이브러리 링크 |
최적화 옵션
최적화 레벨이 올라갈 수록 컴파일 실행 시간 및 메모리 소비율 증가
| 명령어 | 설명 |
|---|
| -O0 | 최적화를 수행하지 않음 |
| -O, -O1 | 코드 크기와 실행 시간 감소 이외의 최적화 X |
| -O2 | 메모리, 속도를 희생하지 않는 범위 내의 최적화(loop unrolling, function inlining x) |
| -O3 | -O2, 인라인 함수와 레지스터 최적화 |
경고 옵션
| 명령어 | 설명 |
|---|
| -Wall | 모든 오류와 경고를 출력 |
| -w | 모든 경고 메시지를 무시 |
| -Werror | 모든 경고를 오류로 취급 |
기타
| 명령어 | 설명 |
|---|
| -fPIC | 코드의 배치를 지정, 공용 라이브러리를 만들 때 주로 사용되며, 바이너리의 크기는 증가하지만 코드의 동작을 빠르게 함 |
예)
all:
g++ -O3 -Wall -shared -std=c++11 -I../include
-fPIC `python3.6 -m pybind11 --includes` bind_py.cpp ../interFace.h
-L../lib -o lang_py`python3.6-config --extension-suffix`