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`