3. Python 구성¶
3.1. 빌드 요구 사항¶
CPython을 빌드하려면 다음이 필요합니다:
C11_ 컴파일러가 필요합니다. 선택적 C11_ 기능 은 필요하지 않습니다.
Windows에서는 Microsoft Visual Studio 2017 이상이 필요합니다.
IEEE 754 부동 소수점 및 부동 소수점 Not-a-Number (NaN) 지원.
스레드 지원.
버전 3.5에서 변경: Windows에서는 이제 Visual Studio 2015 이상이 필요합니다.
버전 3.6에서 변경: <stdint.h 및 static inline 함수와 같은 선택적인 C99 기능이 이제 필요합니다.
버전 3.7에서 변경: 스레드 지원이 이제 필수입니다.
버전 3.11에서 변경: C11 컴파일러, IEEE 754 및 NaN 지원이 이제 필수입니다. Windows에서는 Visual Studio 2017 이상이 필요합니다.
PEP 7 “Style Guide for C Code” 및 PEP 11 “CPython platform support”를 참조하십시오.
3.1.1. 선택적 모듈의 요구 사항¶
표준 라이브러리의 일부 선택적 모듈 은 개발을 위해 설치된 서드파티 라이브러리를 필요로 합니다(예: 헤더 파일이 사용 가능해야 함).
누락된 요구 사항은 configure 출력에 보고됩니다. 의존성 부족으로 누락된 모듈은 make 출력 끝부분에 목록으로 표시되며, 때때로 내부 이름(예: ctypes 모듈의 경우 _ctypes)이 사용되기도 합니다.
선택적 모듈이 포함되지 않은 CPython 인터프리터를 배포하는 경우, 일반적으로 표준 라이브러리 모듈이 제공될 것으로 기대하는 사용자들에게 이를 알리는 것이 좋습니다.
선택적 모듈을 빌드하기 위한 의존성은 다음과 같습니다:
의존성 |
최소 버전 |
Python 모듈 |
|---|---|---|
3.3.0 권장 |
||
2.5.0 |
||
|
||
3.0.18 권장
(최소 1.1.1)
|
||
3.15.2 |
||
8.5.12 |
||
1.2.2.1 |
||
1.4.5 |
이 표에 모든 선택적 모듈이 포함된 것은 아니라는 점에 유의하십시오. 특히 winreg 과 같은 플랫폼 전용 모듈은 여기에 나열되지 않습니다.
더 보기
devguide 에는 모든 모듈을 빌드하는 데 필요한 의존성 전체 목록과 일반적인 플랫폼에서 이를 설치하는 방법이 포함되어 있습니다.
--with-system-expat은 외부 libexpat 라이브러리를 사용하여 빌드할 수 있게 합니다.
버전 3.1에서 변경: tkinter 을 위해 이제 Tcl/Tk 버전 8.3.1이 필요합니다.
버전 3.5에서 변경: tkinter 을 위해 이제 Tcl/Tk 버전 8.4가 필요합니다.
버전 3.11에서 변경: tkinter 을 위해 이제 Tcl/Tk 버전 8.5.12가 필요합니다.
버전 3.13에서 변경: sqlite3 를 위해 이제 SQLite 3.15.2가 필요합니다.
3.2. 생성된 파일¶
빌드 의존성을 줄이기 위해 파이썬 소스 코드에는 여러 생성된 파일이 포함되어 있습니다. 모든 생성된 파일을 재생성하는 명령은 다음과 같습니다:
make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure
Makefile.pre.in 파일은 생성된 파일, 해당 입력값, 재생성 시 사용되는 도구를 기록합니다. regen-* 메이크 타겟을 찾으십시오.
3.2.1. configure 스크립트¶
make regen-configure 명령은 동일한 도구 버전을 가져와 재현 가능한 결과물을 얻기 위해 Ubuntu 컨테이너를 사용하는 Tools/build/regen-configure.sh 셸 스크립트를 사용하여 aclocal.m4 파일과 configure 스크립트를 재생성합니다.
컨테이너는 선택 사항이며, 다음 명령을 로컬에서 실행할 수 있습니다:
autoreconf -ivf -Werror
생성된 파일은 사용되는 도구의 정확한 버전에 따라 달라질 수 있습니다. CPython이 사용하는 컨테이너에는 Autoconf 2.72, Automake <https://www.gnu.org/software/automake>`_ 1.16.5의 ``aclocal, 그리고 pkg-config 1.8.1이 포함되어 있습니다.
버전 3.13에서 변경: 이제 Autoconf 2.71 및 aclocal 1.16.5가 configure 를 재생성하는 데 사용됩니다.
버전 3.14에서 변경: 이제 Autoconf 2.72가 configure 를 재생성하는 데 사용됩니다.
3.3. 구성 옵션¶
다음 명령을 사용하여 모든 configure 스크립트 옵션을 나열하십시오:
./configure --help
파이썬 소스 배포판의 Misc/SpecialBuilds.txt 도 참조하십시오.
3.3.1. 일반 옵션¶
- --enable-loadable-sqlite-extensions¶
sqlite3모듈의_sqlite확장 모듈에서 로드 가능한 확장을 지원합니다(기본값은 no).sqlite3모듈의sqlite3.Connection.enable_load_extension()메서드를 참조하십시오.Added in version 3.6.
- --enable-big-digits=[15|30]¶
Python
int자릿수의 크기를 비트 단위로 정의합니다: 15 또는 30비트.기본적으로 자릿수 크기는 30입니다.
PYLONG_BITS_IN_DIGIT을15또는30으로 정의하십시오.sys.int_info.bits_per_digit를 참조하십시오.
- --with-suffix=SUFFIX¶
Python 실행 파일의 접미사를 SUFFIX 로 설정합니다.
기본 접미사는 Windows 및 macOS에서
.exe``(``python.exe실행 파일), Emscripten node에서.js, Emscripten 브라우저에서.html, WASI에서.wasm``이며, 기타 플랫폼에서는 빈 문자열(``python실행 파일)입니다.버전 3.11에서 변경: WASM 플랫폼의 기본 접미사는
.js,.html또는.wasm중 하나입니다.
- --with-tzpath=<list of absolute paths separated by pathsep>¶
zoneinfo.TZPATH에 대한 기본 시간대 검색 경로를 선택합니다.zoneinfo모듈의 컴파일 시점 구성 을 참조하십시오.기본값:
/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo.os.pathsep경로 구분자를 참조하십시오.Added in version 3.9.
- --without-decimal-contextvar¶
코루틴 로컬 컨텍스트(기본값) 대신 스레드 로컬 컨텍스트를 사용하여
_decimal확장 모듈을 빌드합니다.decimal모듈을 참조하십시오.decimal.HAVE_CONTEXTVAR및contextvars모듈을 참조하십시오.Added in version 3.9.
- --with-dbmliborder=<list of backend names>¶
dbm모듈의 DB 백엔드를 확인하는 순서를 재정의합니다.유효한 값은 콜론(
:)으로 구분된 백엔드 이름 문자열입니다.ndbm;gdbm;bdb.
- --without-c-locale-coercion¶
C 로케일을 UTF-8 기반 로케일로 강제 변환하는 기능을 비활성화합니다(기본적으로 활성화됨).
PY_COERCE_C_LOCALE매크로를 정의하지 않습니다.PYTHONCOERCECLOCALE및 PEP 538 을 참조하십시오.
- --with-platlibdir=DIRNAME¶
Python 라이브러리 디렉터리 이름(기본값은
lib).Fedora와 SuSE는 64비트 플랫폼에서
lib64를 사용합니다.sys.platlibdir을 참조하십시오.Added in version 3.9.
- --with-wheel-pkg-dir=PATH¶
ensurepip모듈에서 사용하는 휠(wheel) 패키지 디렉터리(기본값은 없음).일부 Linux 배포판의 패키징 정책은 종속성 번들을 권장하지 않습니다. 예를 들어, Fedora는 휠 패키지를
/usr/share/python-wheels/디렉터리에 설치하고ensurepip._bundled패키지를 설치하지 않습니다.Added in version 3.10.
- --with-pkg-config=[check|yes|no]¶
구성 시 빌드 종속성을 감지하기 위해 pkg-config 를 사용할지 여부입니다.
check(기본값): pkg-config 가 선택 사항임yes: pkg-config 이 필수임no: 존재하더라도 구성 시 pkg-config 를 사용하지 않음
Added in version 3.11.
- --with-missing-stdlib-config=FILE¶
Path to a JSON configuration file containing custom error messages for missing standard library modules.
이 옵션은 사용자가 누락되었거나 별도로 패키징된 표준 라이브러리 모듈을 마주쳤을 때, 배포판별 안내를 제공하고자 하는 Python 배포사들을 위한 것입니다.
JSON 파일은 누락된 모듈 이름을 사용자 정의 오류 메시지 문자열로 매핑해야 합니다. 예를 들어, 배포판에서
tkinter와_tkinter를 별도로 패키징하고 법적 이유로_gdbm을 제외하는 경우 설정값은 다음과 같을 수 있습니다:{ "_gdbm": "The '_gdbm' module is not available in this distribution", "tkinter": "Install the python-tk package to use tkinter", "_tkinter": "Install the python-tk package to use tkinter", }
Added in version 3.15.
- --enable-pystats¶
내부 Python 성능 통계 수집 기능을 켭니다.
기본적으로 통계 수집은 꺼져 있습니다. Python 시작 시 통계 수집을 켜려면
python3 -X pystats명령어를 사용하거나PYTHONSTATS=1환경 변수를 설정하십시오.Python 종료 시, 통계 수집이 켜져 있고 아직 지워지지 않았다면 통계를 출력합니다.
효과:
-X pystats명령줄 옵션을 추가합니다.PYTHONSTATS환경 변수를 추가합니다.Py_STATS매크로를 정의합니다.sys모듈에 함수를 추가합니다:sys._stats_on(): 통계 수집을 켭니다.sys._stats_off(): 통계 수집을 끕니다.sys._stats_clear(): 통계를 지웁니다.sys._stats_dump(): 통계 정보를 파일에 기록하고 통계를 지웁니다.
통계 정보는 Unix의 경우
/tmp/py_stats/, Windows의 경우C:\temp\py_stats\에 있는 임의의(아마도 고유한) 파일에 기록됩니다. 해당 디렉터리가 존재하지 않으면 결과가 표준 에러(stderr)에 출력됩니다.통계 수치를 읽으려면
Tools/scripts/summarize_stats.py를 사용하십시오.통계:
Opcode:
전문화(Specialization): 성공(success), 실패(failure), 적중(hit), 지연(deferred), 누락(miss), 비최적화(deopt), 오류 횟수(failures);
실행 횟수;
쌍(Pair) 개수.
호출:
인라인된 파이썬 호출;
PyEval 호출;
푸시된 프레임(Frame) 수;
생성된 프레임 객체 수;
평가(Eval) 호출: 벡터, 제너레이터, 레거시, 함수 VECTORCALL, 클래스 구축, 슬롯, 함수 “ex”, API, 메서드.
객체:
incref 및 decref;
인터프리터 incref 및 decref;
할당(allocation): 전체, 512 바이트, 4 KiB, 대형(big);
해제(free);
자유 리스트(free list)로 이동 또는 해제;
딕셔너리 구체화/비구체화;
타입 캐시;
최적화 시도:
생성/실행된 최적화 추적;
실행된 uop 수.
가비지 컬렉터(Garbage collector):
가비지 컬렉션 수;
방문한 객체 수;
수거된 객체 수.
Added in version 3.11.
- --disable-gil¶
Enables support for running Python without the global interpreter lock (GIL): free-threaded build.
Py_GIL_DISABLED매크로를 정의하고sys.abiflags에"t"를 추가합니다.자세한 내용은 자유 스레딩의 파이썬 을 참조하십시오.
Added in version 3.13.
- --enable-experimental-jit=[no|yes|yes-off|interpreter]¶
실험적 적시 컴파일러 를 통합하는 방법을 지정합니다.
no: JIT을 빌드하지 않음yes: JIT을 활성화합니다. 실행 중에 비활성화하려면 환경 변수PYTHON_JIT=0를 설정하십시오.yes-off: JIT를 빌드하되 기본으로 비활성화합니다. 실행 중에 활성화하려면 환경 변수PYTHON_JIT=1를 설정하십시오.interpreter: “JIT 인터프리터”를 활성화합니다(JIT 자체를 디버깅하는 경우에만 유용함). 실행 중에 비활성화하려면 환경 변수PYTHON_JIT=0를 설정하십시오.
옵션을 제공하지 않을 경우 기본 동작은
--enable-experimental-jit=no이며,--enable-experimental-jit는--enable-experimental-jit=yes의 약칭입니다. 빌드 시 필요한 종속성 설치 방법을 포함한 자세한 정보는Tools/jit/README.md를 참조하십시오.참고
JIT이 활성화된 상태로 CPython을 빌드할 때, 시스템에 Python 3.11 이상이 설치되어 있는지 확인하십시오.
Added in version 3.13.
- PKG_CONFIG¶
pkg-config유틸리티 경로입니다.
- PKG_CONFIG_LIBDIR¶
- PKG_CONFIG_PATH¶
pkg-config옵션입니다.
- --disable-epoll¶
epoll없이 빌드합니다. 즉, 시스템이 epoll_create 함수를 제공하더라도select.epoll()이 존재하지 않게 됩니다. 이는 epoll_create 또는 epoll_create1 는 사용 가능하지만 Linux 시맨틱과 호환되지 않는 시스템에서 사용될 수 있습니다.Added in version 3.15.
- --with-build-details-suffix=[yes|SUFFIX]¶
동일한 위치에 여러 개의 Python을 설치할 수 있도록
build-details.json``의 이름을 변경합니다. 사용자 정의 ``SUFFIX``가 제공되면 그대로 사용하며, 그렇지 않으면 적절하게 ``-free-threading및-debug``와 함께 ``MULTIARCH태그를 사용하여 생성됩니다.Added in version 3.16.
3.3.2. C 컴파일러 옵션¶
- CC¶
C 컴파일러 명령.
- CFLAGS¶
C 컴파일러 플래그.
- CPP¶
C 전처리기 명령.
- CPPFLAGS¶
C 전처리기 플래그 (예:
-Iinclude_dir).
3.3.3. 링커 옵션¶
- LDFLAGS¶
링커 플래그 (예:
-Llibrary_directory).
- LIBS¶
링커에 전달할 라이브러리 (예:
-llibrary).
- MACHDEP¶
기계 종속적 라이브러리 파일의 이름.
3.3.4. 제삼자 종속성 옵션¶
Added in version 3.11.
- BZIP2_CFLAGS¶
- CURSES_CFLAGS¶
- GDBM_CFLAGS¶
- GDBM_LIBS¶
gdbm을 위한 C 컴파일러 및 링커 플래그.
- LIBEDIT_CFLAGS¶
- LIBFFI_CFLAGS¶
- LIBMPDEC_CFLAGS¶
- LIBLZMA_CFLAGS¶
- LIBREADLINE_CFLAGS¶
- LIBSQLITE3_CFLAGS¶
- LIBUUID_CFLAGS¶
- LIBZSTD_CFLAGS¶
- LIBZSTD_LIBS¶
pkg-config를 대체하여compression.zstd모듈에서 사용하는libzstd를 위한 C 컴파일러 및 링커 플래그.Added in version 3.14.
- PANEL_CFLAGS¶
- PANEL_LIBS¶
pkg-config를 대체하여 PANEL을 위한 C 컴파일러 및 링커 플래그.pkg-config를 대체하여curses.panel모듈에서 사용하는libpanel또는libpanelw를 위한 C 컴파일러 및 링커 플래그.
- TCLTK_CFLAGS¶
- TCLTK_LIBS¶
pkg-config를 대체하여 TCLTK를 위한 C 컴파일러 및 링커 플래그.
- ZLIB_CFLAGS¶
3.3.5. WebAssembly 옵션¶
- --enable-wasm-dynamic-linking¶
WASM을 위한 동적 연결 지원 활성화.
동적 연결은
dlopen을 활성화합니다. 제한된 데드 코드 제거 및 추가 기능으로 인해 실행 파일 크기가 증가합니다.Added in version 3.11.
- --enable-wasm-pthreads¶
WASM을 위한 pthreads 지원 활성화.
Added in version 3.11.
3.3.6. 설치 옵션¶
- --prefix=PREFIX¶
PREFIX에 아키텍처 독립적인 파일을 설치합니다. Unix에서 기본값은
/usr/local입니다.이 값은 런타임에
sys.prefix를 사용하여 가져올 수 있습니다.예를 들어,
--prefix="$HOME/.local/"를 사용하여 홈 디렉터리에 파이썬을 설치할 수 있습니다.
- --exec-prefix=EPREFIX¶
EPREFIX에 아키텍처 의존적인 파일을 설치합니다. 기본값은
--prefix입니다.이 값은 런타임에
sys.exec_prefix를 사용하여 가져올 수 있습니다.
3.3.7. 성능 옵션¶
최상의 성능을 위해 --enable-optimizations --with-lto (PGO + LTO)를 사용하여 파이썬을 구성하는 것을 권장합니다. 실험적인 --enable-bolt 플래그도 성능 향상을 위해 사용할 수 있습니다.
- --enable-optimizations¶
PROFILE_TASK를 사용하여 프로파일 기반 최적화(PGO) 활성화 (기본값은 비활성).C 컴파일러 Clang은 PGO를 위해
llvm-profdata프로그램이 필요합니다. macOS에서 GCC도 이 프로그램이 필요합니다. (macOS에서 GCC는 Clang의 별칭입니다.)--enable-shared및 GCC를 사용하는 경우 libpython에서 의미론적 중첩(semantic interposition)도 비활성화하십시오. 컴파일러 및 링커 플래그에-fno-semantic-interposition을 추가하십시오.참고
빌드 중에 일부 소스 파일에 대해 프로파일 데이터를 사용할 수 없다는 컴파일러 경고가 발생할 수 있습니다. 프로파일 데이터 획득 과정에서 코드의 일부만 실행되기 때문에 이러한 경고는 무해합니다. Clang에서 이 경고를 비활성화하려면
CFLAGS`에 `-Wno-profile-instr-unprofiled``를 추가하여 수동으로 억제하십시오.Added in version 3.6.
버전 3.10에서 변경: GCC에서
-fno-semantic-interposition사용.
- PROFILE_TASK¶
Makefile에서 사용되는 환경 변수: PGO 생성 작업을 위한 파이썬 명령 줄 인수.
기본값:
-m test --pgo --timeout=$(TESTTIMEOUT).Added in version 3.8.
버전 3.13에서 변경: 작업 실패를 더 이상 무시하지 않습니다.
- --with-lto=[full|thin|no|yes]¶
모든 빌드에서 링크 시간 최적화(LTO) 활성화 (기본값은 비활성).
C 컴파일러 Clang은 LTO를 위해
llvm-ar``(macOS에서는 ``ar) 및 LTO 인식 링커(ld.gold또는lld)가 필요합니다.Added in version 3.6.
Added in version 3.11: ThinLTO 기능을 사용하려면 Clang에서
--with-lto=thin을 사용하십시오.버전 3.12에서 변경: 컴파일러가 플래그를 수락하는 경우, Clang에서 기본 최적화 정책으로 ThinLTO를 사용합니다.
- --enable-bolt¶
BOLT 포스트 링크 바이너리 최적화 사용 활성화 (기본값은 비활성).
BOLT는 LLVM 프로젝트의 일부이지만 바이너리 배포에 항상 포함되는 것은 아닙니다. 이 플래그는
llvm-bolt와merge-fdata가 사용 가능함을 요구합니다.BOLT는 아직 상당히 새로운 프로젝트이므로 현재로서는 이 플래그를 실험적인 것으로 간주해야 합니다. 이 도구는 기계 코드에서 작동하므로 성공 여부가 빌드 환경, 기타 최적화 구성 인수, CPU 아키텍처의 조합에 따라 달라지며 모든 조합이 지원되는 것은 아닙니다. LLVM 16 이전 버전의 BOLT는 일부 시나리오에서 충돌을 일으키는 것으로 알려져 있습니다. BOLT 최적화를 위해 LLVM 16 이상 버전을 사용하는 것이 강력히 권장됩니다.
BOLT_INSTRUMENT_FLAGS및BOLT_APPLY_FLAGSconfigure 변수를 정의하여 바이너리에 인스트루먼트하고 BOLT 데이터를 적용하는 llvm-bolt 의 기본 인수 세트를 각각 재정의할 수 있습니다.Added in version 3.12.
- BOLT_APPLY_FLAGS¶
BOLT 최적화 바이너리 를 생성할 때
llvm-bolt에 전달되는 인수.Added in version 3.12.
- BOLT_INSTRUMENT_FLAGS¶
바이너리를 인스트루먼트할 때
llvm-bolt에 전달되는 인수.Added in version 3.12.
- --with-computed-gotos¶
평가 루프에서 computed goto 활성화 (지원되는 컴파일러에서 기본으로 활성).
- --with-tail-call-interp¶
CPython에서 테일 콜을 사용하는 인터프리터 활성화. 이를 활성화하면 PGO(
--enable-optimizations)를 활성화하는 것을 강력히 권장합니다. 이 옵션은 특히 적절한 테일 콜 지원과 preserve_none 호출 규약을 갖춘 C 컴파일러를 필요로 합니다. 예를 들어, Clang 19 및 상위 버전이 이 기능을 지원합니다.Added in version 3.14.
- --without-frame-pointers¶
기본적으로 활성화된 프레임 포인터 비활성화(siehe PEP 831).
기본적으로 빌드는 프레임 또는 백체인 포인터를 생성하기 위한 플래그를
BASECFLAGS에 추가합니다.컴파일러가 지원하는 경우
-fno-omit-frame-pointer및/또는-mno-omit-leaf-frame-pointer가 추가됩니다.지원되는 경우 32비트 ARM에서
-marm및/또는-mno-thumb이 추가되며,s390x 플랫폼의 경우, 지원되는 경우 위의 프레임 포인터 플래그 대신
-mbackchain이 추가됩니다.ppc64le 플랫폼의 경우 Power ABI가 컴파일러가 기본적으로 백 체인을 유지할 것을 요구하므로 어떠한 컴파일러 플래그도 필요하지 않습니다.
프레임 포인터는 프로파일러, 디버거 및 시스템 추적 도구(
perf,eBPF,dtrace,gdb)가 DWARF 메타데이터 없이 C 호출 스택을 탐색할 수 있게 합니다. 이러한 플래그는sysconfig를 통해 제삼자 C 확장 기능으로 전달됩니다. 해당 플래그를 이해하지 못하는 컴파일러의 경우 빌드 시 이를 조용히 건너뜁니다.커스텀 빌드 시스템으로 구축된 네이티브 라이브러리의 후속 패키지 제작자 및 저자는 모든 네이티브 프레임에 걸쳐 언와인드 체인이 끊기지 않도록 동일한 플래그를 설정해야 합니다.
Added in version 3.15.
- --without-mimalloc¶
빠른 mimalloc 할당자 비활성화(기본값은 활성).
이 옵션은
--disable-gil과 함께 사용할 수 없습니다. free-threaded 빌드는 mimalloc을 필요로 하기 때문입니다.PYTHONMALLOC환경 변수도 참조하십시오.
- --without-pymalloc¶
특화된 파이썬 메모리 할당자 pymalloc 비활성화(기본값은 활성).
PYTHONMALLOC환경 변수도 참조하십시오.
- --with-pymalloc-hugepages¶
pymalloc 아레나를 위한 대형 페이지(huge page) 지원 활성화(기본값은 비활성). 활성화되면 64비트 플랫폼에서 아레나 크기가 2 MiB로 늘어나고, 아레나 할당 시
MAP_HUGETLB(Linux) 또는MEM_LARGE_PAGES(Windows)를 사용하며 실패 시 일반 페이지로 자동 전환됩니다.이 옵션으로 컴파일되더라도,
PYTHON_PYMALLOC_HUGEPAGES환경 변수가1로 설정되지 않으면 런타임에 대형 페이지가 사용되지 않습니다. 이러한 선택적 활성화가 필요한 이유는 대형 페이지가Linux에서 위험을 수반하기 때문입니다. 대형 페이지 풀이 소진되면, 페이지 폴트(
os.fork()이후의 쓰기 시 복사 포함)가SIGBUS를 발생시켜 프로세스를 종료합니다.Windows에서 특별한 권한을 필요로 하기 때문입니다. 자세한 내용은 Windows 대형 페이지 문서 를 참조하십시오. 사용자가 필요한 권한인 SeLockMemoryPrivilege 을 보유하지 않은 경우 Python 시작 시 오류가 발생합니다.
configure 스크립트는 플랫폼이
MAP_HUGETLB를 지원하는지 확인하고, 사용 가능하지 않은 경우 경고를 출력합니다.Windows에서는
build.bat``과 함께 ``--pymalloc-hugepages플래그를 사용하거나UsePymallocHugepagesMSBuild 속성을 설정하십시오.Added in version 3.15.
- --without-doc-strings¶
메모리 사용량을 줄이기 위해 정적 독스트링을 비활성화합니다(기본적으로 활성화됨). 파이썬에서 정의된 독스트링은 영향을 받지 않습니다.
WITH_DOC_STRINGS매크로를 정의하지 마십시오.PyDoc_STRVAR()매크로를 참조하십시오.
- --enable-profiling¶
gprof를 사용하여 C 레벨 코드 프로파일링을 활성화합니다(기본적으로 비활성화됨).
- --with-strict-overflow¶
C 컴파일러 플래그에
-fstrict-overflow를 추가합니다(기본적으로 대신-fno-strict-overflow가 추가됩니다).
- --without-remote-debug¶
PEP 768 에서 설명하는 원격 디버깅 지원을 비활성화합니다(기본적으로 활성화됨). 이 플래그가 제공되면 PEP 768 에 기술된 대로 인터프리터가 별도의 프로세스에서 파이썬 파일의 실행을 예약하는 코드가 컴파일되지 않습니다. 여기에는 실행할 코드를 예약하는 기능과 실행할 코드를 수신하는 기능이 모두 포함됩니다.
-
Py_REMOTE_DEBUG¶
파이썬이
--without-remote-debug으로 구성되지 않는 한 이 매크로는 기본적으로 정의됩니다.매크로가 정의되더라도 원격 디버깅을 사용할 수 없을 수도 있습니다(예를 들어 호환되지 않는 플랫폼의 경우).
Added in version 3.14.
-
Py_REMOTE_DEBUG¶
3.3.8. 파이썬 디버그 빌드¶
디버그 빌드는 --with-pydebug 구성 옵션을 사용하여 빌드된 파이썬입니다.
디버그 빌드의 효과:
기본적으로 모든 경고를 표시합니다:
warnings모듈의 기본 경고 필터 목록이 비어 있습니다.sys.abiflags에d를 추가합니다.sys.gettotalrefcount()함수를 추가합니다.-X showrefcount명령줄 옵션을 추가합니다.파서를 디버깅하기 위해
-d명령줄 옵션과PYTHONDEBUG환경 변수를 추가합니다.__lltrace__변수 지원을 추가합니다: 해당 변수가 정의된 경우 바이트 코드 평가 루프에서 로우 레벨 추적을 활성화합니다.버퍼 오버플로 및 기타 메모리 오류를 감지하기 위해 메모리 할당자에 디버그 훅 설치 를 수행합니다.
Py_DEBUG및Py_REF_DEBUG매크로를 정의합니다.런타임 검사를 추가합니다:
#ifdef Py_DEBUG``와 ``#endif``로 둘러싸인 코드. ``assert(...)및_PyObject_ASSERT(...)어설션을 활성화합니다:NDEBUG매크로를 설정하지 마십시오(또한--with-assertions구성 옵션을 참조하십시오). 주요 런타임 검사:함수 인자에 대한 무결성 체크를 추가합니다.
유니코드 및 정수 객체 생성 시 초기화되지 않은 객체의 사용을 감지하기 위해 메모리를 특정 패턴으로 채웁니다.
현재 예외를 지우거나 대체할 수 있는 함수가 예외가 발생한 상태에서 호출되지 않도록 보장합니다.
할당 해제 함수가 현재 예외를 변경하지 않는지 확인합니다.
가비지 컬렉터(
gc.collect()함수)가 객체의 일관성에 대한 몇 가지 기본 검사를 수행합니다.Py_SAFE_DOWNCAST()매크로는 넓은 유형에서 좁은 유형으로 다운캐스팅할 때 정수 언더플로우 및 오버플로를 확인합니다.
파이썬 개발 모드 및 --with-trace-refs 구성 옵션을 참조하십시오.
버전 3.8에서 변경: 릴리스 빌드는 이제 디버그 빌드와 ABI 호환됩니다: Py_DEBUG 매크로를 정의하는 것이 더 이상 Py_TRACE_REFS 매크로를 의미하지 않습니다( --with-trace-refs 옵션 참조). 다만, 디버그 빌드는 여전히 릴리스 빌드보다 많은 심볼을 노출하며, 디버그 빌드를 기반으로 빌드된 코드가 릴리스 빌드와 반드시 호환되는 것은 아닙니다.
3.3.9. 디버그 옵션¶
- --with-pydebug¶
파이썬을 디버그 모드로 빌드:
Py_DEBUG매크로를 정의합니다(기본적으로 비활성화됨).
- --with-trace-refs¶
디버깅 목적으로 참조 추적을 활성화합니다(기본적으로 비활성화됨).
효과:
Py_TRACE_REFS매크로를 정의합니다.sys.getobjects()함수를 추가합니다.PYTHONDUMPREFS환경 변수를 추가합니다.
PYTHONDUMPREFS환경 변수는 파이썬 종료 시에도 남아 있는 객체와 참조 횟수를 덤프하는 데 사용될 수 있습니다.정적으로 할당된 객체 는 추적되지 않습니다.
Added in version 3.8.
버전 3.13에서 변경: 이 빌드는 이제 릴리스 빌드 및 디버그 빌드 와 ABI 호환됩니다.
- --with-assertions¶
C 어설션을 활성화하여 빌드합니다(기본값은 아니오):
assert(...);및_PyObject_ASSERT(...);.설정된 경우,
OPT컴파일러 변수에서NDEBUG매크로가 정의되지 않습니다.어설션도 활성화하는
--with-pydebug옵션(디버그 빌드)을 참조하십시오.Added in version 3.6.
- --with-valgrind¶
Valgrind 지원을 활성화합니다(기본값은 아니오).
- --with-dtrace¶
DTrace 지원을 활성화합니다(기본값은 아니오).
DTrace 및 SystemTap으로 CPython 계측하기 을 참조하십시오.
Added in version 3.6.
- --with-address-sanitizer¶
AddressSanitizer 메모리 오류 감지기인
asan을 활성화합니다(기본값은 아니오). ASan의 탐지 기능을 향상시키려면 ASan이 추적하지 않는 전용 소형 객체 할당기를 비활성화하는--without-pymalloc과 함께 사용하기를 권장합니다.Added in version 3.6.
- --with-memory-sanitizer¶
MemorySanitizer 할당 오류 감지기인
msan을 활성화합니다(기본값은 아니오).Added in version 3.6.
- --with-undefined-behavior-sanitizer¶
UndefinedBehaviorSanitizer 정의되지 않은 동작 감지기인
ubsan을 활성화합니다(기본값은 아니오).Added in version 3.6.
- --with-thread-sanitizer¶
ThreadSanitizer 데이터 경합 감지기인
tsan을 활성화합니다(기본값은 아니오).Added in version 3.13.
3.3.10. 링커 옵션¶
공유 파이썬 라이브러리
libpython빌드를 활성화합니다(기본값은 아니오).
- --without-static-libpython¶
libpythonMAJOR.MINOR.a를 빌드하지 않고python.o를 설치하지 않습니다(기본적으로 구축 및 활성화됨).Added in version 3.10.
- --enable-static-libpython-for-interpreter¶
파이썬 인터프리터 바이너리(
python3)를 공유 파이썬 라이브러리에 링크하지 마십시오. 대신,--enable-shared가 사용되지 않은 것처럼 인터프리터를libpython에 정적으로 연결하되, 다른 프로그램에서 사용할 수 있도록 공유libpython은 계속 빌드합니다.이 옵션은
--enable-shared가 사용되지 않으면 아무런 동작도 하지 않습니다.기본값(
-enable-shared사용 시)은 파이썬 인터프리터를 빌드된 공유 라이브러리에 연결하는 것입니다.Added in version 3.15.
3.3.11. 라이브러리 옵션¶
- --with-libs='lib1 ...'¶
추가 라이브러리에 링크합니다(기본값은 아니오).
- --with-system-expat¶
설치된
expat라이브러리를 사용하여pyexpat모듈을 빌드합니다(기본값은 아니오).
- --with-readline=readline|editline¶
readline모듈을 위한 백엔드 라이브러리를 지정합니다.readline: readline을 백엔드로 사용합니다.
editline: editline을 백엔드 등으로 사용합니다.
Added in version 3.10.
- --without-readline¶
readline모듈을 빌드하지 마십시오(기본적으로 구축됨).HAVE_LIBREADLINE매크로를 정의하지 마십시오.Added in version 3.10.
- --with-libm=STRING¶
libm수학 라이브러리를 STRING 으로 대체합니다(기본값은 시스템 종속적임).
- --with-libc=STRING¶
libcC 라이브러리를 STRING 으로 대체합니다(기본값은 시스템 종속적임).
- --with-openssl=DIR¶
OpenSSL 디렉터리의 루트.
Added in version 3.7.
- --with-openssl-rpath=[no|auto|DIR]¶
OpenSSL 라이브러리에 대한 실행 시 라이브러리 경로(rpath)를 설정합니다:
no(기본값): rpath를 설정하지 않음;auto:--with-openssl및pkg-config에서 rpath를 자동 감지합니다.DIR: 명시적인 rpath를 설정합니다.
Added in version 3.10.
3.3.12. 보안 옵션¶
- --with-hash-algorithm=[fnv|siphash13|siphash24]¶
Python/pyhash.c에서 사용할 해시 알고리즘을 선택합니다:siphash13(기본값);siphash24;fnv.
Added in version 3.4.
Added in version 3.11:
siphash13이 추가되었으며 새로운 기본값이 됩니다.
- --with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2¶
내장 해시 모듈:
md5;sha1;sha256;sha512;sha3(shake 포함);blake2.
Added in version 3.9.
- --with-ssl-default-suites=[python|openssl|STRING]¶
OpenSSL 기본 암호 스위트 문자열을 대체합니다:
python(기본값): 파이썬이 선호하는 선택을 사용함;openssl: OpenSSL의 기본 설정을 그대로 유지함;STRING: 사용자 정의 문자열을 사용함
ssl모듈을 참조하십시오.Added in version 3.7.
버전 3.10에서 변경:
python및 STRING 설정은 TLS 1.2를 최소 프로토콜 버전으로 설정합니다.
- --disable-safety¶
성능 저하 없이 보안을 위해 recommended by OpenSSF 컴파일러 옵션을 비활성화합니다. 이 옵션이 활성화되지 않으면, CPython은 성능 저하가 없는 안전한 컴파일러 옵션을 기반으로 빌드됩니다. 이 옵션이 활성화되면, CPython은 아래에 나열된 컴파일러 옵션을 사용하여 빌드되지 않습니다.
다음 컴파일러 옵션들이
--disable-safety를 통해 비활성화됩니다:-fstack-protector-strong: 스택 기반 버퍼 오버플로에 대한 실행 시간 점검을 활성화합니다.
-Wtrampolines: 실행 가능한 스택이 필요한 트램펄린에 대한 경고를 활성화합니다.
Added in version 3.14.
- --enable-slower-safety¶
성능 저하가 수반되지만 보안을 위해 recommended by OpenSSF 컴파일러 옵션을 활성화합니다. 이 옵션이 활성화되지 않으면, CPython은 성능에 영향을 주는 안전한 컴파일러 옵션을 기반으로 빌드되지 않습니다. 이 옵션이 활성화되면, CPython은 아래에 나열된 컴파일러 옵션을 사용하여 빌드됩니다.
다음 컴파일러 옵션들이
--enable-slower-safety를 통해 활성화됩니다:-D_FORTIFY_SOURCE=3: 안전하지 않은 libc 사용 및 버퍼 오버플로에 대한 컴파일 및 실행 시간 점검으로 소스를 강화합니다.
Added in version 3.14.
3.3.13. macOS 옵션¶
Mac/README.rst 를 참조하십시오.
- --enable-universalsdk¶
- --enable-universalsdk=SDKDIR¶
범용 바이너리 빌드를 생성합니다. SDKDIR 은 빌드 시 사용할 macOS SDK를 지정하며, 기본값은 없음(no)입니다.
- --enable-framework¶
- --enable-framework=INSTALLDIR¶
전통적인 Unix 설치 대신 Python.framework를 생성합니다. 선택 사항인 INSTALLDIR 은 설치 경로를 지정하며, 기본값은 없음(no)입니다.
- --with-universal-archs=ARCH¶
생성할 범용 바이너리의 유형을 지정합니다. 이 옵션은
--enable-universalsdk가 설정된 경우에만 유효합니다.옵션:
universal2(x86-64 및 arm64);32-bit(PPC 및 i386);64-bit(PPC64 및 x86-64);3-way(i386, PPC 및 x86-64);intel(i386 및 x86-64);intel-32(i386);intel-64(x86-64);all(PPC, i386, PPC64 및 x86-64).
이 구성 항목의 값은 macOS에서 사용되는 범용 바이너리 휠(wheel)에 사용되는 식별자와 동일하지 않음에 유의하십시오. 자세한 내용은 Python Packaging User Guide의 macOS에서 사용되는 패키징 플랫폼 호환성 태그 를 참조하십시오.
- --with-framework-name=FRAMEWORK¶
macOS용 파이썬 프레임워크의 이름을 지정합니다. 이 옵션은
--enable-framework가 설정된 경우에만 유효합니다 (기본값:Python).
- --with-app-store-compliance¶
- --with-app-store-compliance=PATCH-FILE¶
Python 표준 라이브러리에는 macOS 및 iOS App Store를 통해 배포할 때 자동 검사 도구의 오류를 유발하는 것으로 알려진 문자열이 포함되어 있습니다. 이 옵션을 활성화하면 앱 스토어 준수를 위해 알려진 패치 목록을 적용합니다. 사용자 정의 패치 파일도 지정할 수 있습니다. 이 옵션은 기본적으로 비활성화되어 있습니다.
Added in version 3.13.
3.3.14. iOS 옵션¶
iOS/README.rst 를 참조하십시오.
- --enable-framework=INSTALLDIR¶
Python.framework를 생성합니다. macOS와 달리, 설치 경로를 지정하는 INSTALLDIR 인수가 필수입니다.
- --with-framework-name=FRAMEWORK¶
프레임워크의 이름을 지정합니다 (기본값:
Python).
3.3.15. 교차 컴파일 옵션¶
교차 빌드(cross building)로도 알려진 교차 컴파일은 다른 CPU 아키텍처나 플랫폼을 위한 Python을 빌드할 때 사용할 수 있습니다. 교차 컴파일을 위해서는 빌드용 플랫폼에 대한 Python 인터프리터가 필요합니다. 빌드용 Python 버전은 교차 컴파일될 호스트(host) Python의 버전과 일치해야 합니다.
- --build=BUILD¶
빌드(BUILD)를 위한 구성; 보통 config.guess 에 의해 추측됩니다.
- --host=HOST¶
호스트(HOST, 대상 플랫폼)에서 실행될 프로그램을 빌드하기 위한 교차 컴파일
- --with-build-python=path/to/python¶
교차 컴파일을 위해
python바이너리를 빌드할 경로Added in version 3.11.
- CONFIG_SITE=file¶
configure를 재정의하는 파일이 있는 위치를 가리키는 환경 변수.
예시 config.site 파일:
# config.site-aarch64 ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no
- HOSTRUNNER¶
교차 컴파일을 위해 호스트 플랫폼용 CPython을 실행하는 프로그램.
Added in version 3.11.
교차 컴파일 예시:
CONFIG_SITE=config.site-aarch64 ../configure \
--build=x86_64-pc-linux-gnu \
--host=aarch64-unknown-linux-gnu \
--with-build-python=../x86_64/python
3.4. Python 빌드 시스템¶
3.4.1. 빌드 시스템의 주요 파일¶
configure.ac=>configure;Makefile.pre.in=>Makefile(configure에 의해 생성);pyconfig.h(configure에 의해 생성);Modules/Setup:Module/makesetup셸 스크립트를 사용하여 Makefile이 빌드하는 C 확장 프로그램;
3.4.2. 주요 빌드 단계¶
C 파일(
.c)은 오브젝트 파일(.o)로 빌드됩니다.오브젝트 파일들로부터 정적
libpython라이브러리(.a)가 생성됩니다.python.o``와 정적 ``libpython라이브러리가 최종python프로그램으로 링크됩니다.C 확장 프로그램은 Makefile에 의해 빌드됩니다(see
Modules/Setup).
3.4.3. 주요 Makefile 대상¶
3.4.3.1. make¶
대부분의 경우, 코드를 수정하거나 상위(upstream)로부터 체크아웃을 새로 고친 후 다시 빌드할 때는 make 만 실행하면 됩니다. (Make의 의미론에 따라) 이는 Makefile에 정의된 첫 번째 대상인 기본 대상을 빌드합니다. 관례에 따라(CPython 프로젝트 포함) 이것은 보통 all 대상입니다. configure 스크립트는 make all 이 어떤 대상을 빌드할지 정확하게 설명하기 위해 autoconf 변수인 @DEF_MAKE_ALL_RULE@ 를 확장합니다. 세 가지 선택지는 다음과 같습니다.
profile-opt(--enable-optimizations로 설정됨)build_wasm(호스트 플랫폼이wasm32-wasi*또는wasm32-emscripten과 일치하는 경우 선택됨)build_all(다른 두 옵션 중 어느 것도 명시적으로 사용하지 않고 구성된 경우)
최근 소스 파일 변경에 따라, Make는 오래된 것으로 간주되는 모든 대상(오브젝트 파일 및 실행 파일)을 재빌드하며, 필요한 경우 configure 를 다시 실행합니다. 그러나 소스/타겟 의존성이 많고 수동으로 관리되므로, Make가 재빌드가 필요한 모든 대상을 정확하게 감지하는 데 필요한 정보가 부족할 때가 있습니다. 재빌드되지 않은 대상에 따라 몇 가지 문제가 발생할 가능성이 있습니다. 설명할 수 없는 빌드 또는 테스트 문제가 발생하면, make clean && make 를 실행하여 대부분의 의존성 문제를 해결할 수 있으며, 이 과정에서 빌드 시간이 길어질 수 있습니다.
3.4.3.2. make 플랫폼¶
python 프로그램을 빌드하되, 표준 라이브러리 확장 모듈은 빌드하지 않습니다. 이 과정에서 빌드 플랫폼의 세부 사항을 포함하는 한 줄이 있는 platform``이라는 파일이 생성됩니다(예: ``macosx-14.3-arm64-3.12 또는 linux-x86_64-3.13).
3.4.3.3. make profile-opt¶
프로파일 기반 최적화(PGO)를 사용하여 Python을 빌드합니다. make 명령의 기본 대상을 이 옵션으로 설정하려면 configure의 --enable-optimizations 옵션을 사용할 수 있습니다(make all 또는 그냥 make).
3.4.3.4. make clean¶
빌드된 파일을 제거합니다.
3.4.3.5. make distclean¶
make clean 이 수행하는 작업 외에도, configure 스크립트에 의해 생성된 파일들을 제거합니다. 다시 빌드하기 전에 configure 를 실행해야 합니다. [6]
3.4.3.6. make install¶
all 대상을 빌드하고 Python을 설치합니다.
3.4.3.7. make test¶
all 대상을 빌드하고 GUI 테스트를 제외한 --fast-ci 옵션으로 Python 테스트 스위트를 실행합니다. 변수:
TESTOPTS: 추가적인 regrtest 명령줄 옵션.TESTPYTHONOPTS: 추가적인 Python 명령줄 옵션.TESTTIMEOUT: 초 단위 타임아웃(기본값: 10분).
3.4.3.8. make ci¶
이것은 make test 와 유사하지만, -ugui 를 사용하여 GUI 테스트도 실행합니다.
Added in version 3.14.
3.4.3.9. make buildbottest¶
이것은 make test``와 유사하지만, ``--fast-ci 옵션 대신 --slow-ci 옵션을 사용하며 타임아웃 기본값이 20분입니다.
3.4.3.10. make regen-all¶
생성된 거의 모든 파일을 다시 생성합니다. 여기에는 바이트코드 케이스와 파서 제너레이터 파일이 포함되지만 이에 국한되지 않습니다. 나머지 생성된 파일 을 위해 make regen-stdlib-module-names 및 autoconf 를 별도로 실행해야 합니다.
3.4.4. C 확장 프로그램¶
일부 C 확장은 sys 모듈과 같이 내장된(built-in) 모듈로 빌드됩니다. 이들은 Py_BUILD_CORE_BUILTIN 매크로가 정의된 상태에서 빌드됩니다. 내장 모듈에는 __file__ 속성이 없습니다.
>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> sys.__file__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'sys' has no attribute '__file__'
다른 C 확장은 _asyncio 모듈과 같이 동적 라이브러리로 빌드됩니다. 이들은 Py_BUILD_CORE_MODULE 매크로가 정의된 상태에서 빌드됩니다. Linux x86-64 예시:
>>> import _asyncio
>>> _asyncio
<module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>
>>> _asyncio.__file__
'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'
Modules/Setup`은 C 확장 프로그램을 빌드하기 위한 Makefile 대상을 생성하는 데 사용됩니다. 파일의 시작 부분에서, C 확장은 내장 모듈로 빌드됩니다. ``*shared*` 마커 뒤에 정의된 확장 프로그램은 동적 라이브러리로 빌드됩니다.
Py_BUILD_CORE_MODULE 매크로가 정의되어 있는지 여부에 따라 Include/exports.h`의 :c:macro:!PyAPI_FUNC()`, PyAPI_DATA() 및 PyMODINIT_FUNC 매크로가 다르게 정의됩니다.
Py_BUILD_CORE_MODULE이 정의된 경우Py_EXPORTED_SYMBOL을 사용하십시오.그렇지 않은 경우에는
Py_IMPORTED_SYMBOL을 사용하십시오.
공유 라이브러리로 빌드된 C 확장 모듈에서 Py_BUILD_CORE_BUILTIN 매크로를 실수로 사용하면, 해당 모듈의 PyInit_xxx() 함수가 내보내지지 않아 임포트 시 ImportError 가 발생합니다.
3.5. 컴파일러 및 링커 플래그¶
./configure 스크립트와 환경 변수에 의해 설정되며 Makefile 에서 사용되는 옵션입니다.
3.5.1. 전처리기 플래그¶
- CPPFLAGS¶
(Objective) C/C++ 전처리기 플래그입니다. 예를 들어, 비표준 디렉터리 include_dir 에 헤더 파일이 있는 경우
-Iinclude_dir와 같은 형태를 사용합니다.환경 변수에 지정된 디렉터리를 사용하여 확장 모듈을 빌드하려면
CPPFLAGS와LDFLAGS모두에 쉘의 값이 포함되어야 합니다.
- BASECPPFLAGS¶
Added in version 3.4.
- PY_CPPFLAGS¶
인터프리터 목적 파일 빌드를 위해 추가된 전처리기 플래그입니다.
기본값:
$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS).Added in version 3.2.
3.5.2. 컴파일러 플래그¶
- CC¶
C 컴파일러 명령.
예시:
gcc -pthread.
- CXX¶
C++ 컴파일러 명령.
예시:
g++ -pthread.
- CFLAGS¶
C 컴파일러 플래그.
- CFLAGS_NODIST¶
CFLAGS_NODIST은 인터프리터 및 표준 라이브러리 C 확장 기능을 빌드하는 데 사용됩니다. 파이썬이 설치된 후에도 특정 컴파일러 플래그가CFLAGS에 포함되어서는 안 되는 경우 이 변수를 사용하십시오 (gh-65320).특히,
CFLAGS에는 다음 내용이 포함되어서는 안 됩니다.인클루드 파일 검색 경로를 설정하는 컴파일러 플래그
-I``입니다. ``-I플래그는 왼쪽에서 오른쪽 방향으로 처리되며,CFLAGS`에 포함된 모든 플래그는 사용자 및 패키지에서 제공한 `-I`` 플래그보다 우선합니다.배포판 시스템이 사용자가 설치한 패키지가 강화된 표준을 준수하는지 제어할 수 없기 때문에,
-Werror와 같은 하드닝 플래그는 포함하지 않습니다.
Added in version 3.5.
- COMPILEALL_OPTS¶
make install에서 PYC 파일을 빌드할 때compileall명령 줄에 전달되는 옵션입니다. 기본값:-j0.Added in version 3.12.
- EXTRA_CFLAGS¶
추가 C 컴파일러 플래그.
- CONFIGURE_CFLAGS_NODIST¶
./configure스크립트에 전달되는CFLAGS_NODIST변수의 값입니다.Added in version 3.5.
- BASECFLAGS¶
기본 컴파일러 플래그.
- OPT¶
최적화 플래그.
- CFLAGS_ALIASING¶
Python/dtoa.c를 컴파일할 때 사용하는 엄격 또는 비엄격 에일리어싱 플래그입니다.Added in version 3.7.
- CFLAGS_CEVAL¶
Python/ceval.c를 컴파일하는 데 사용되는 플래그입니다.Added in version 3.14.5.
- CCSHARED¶
공유 라이브러리를 빌드하는 데 사용되는 컴파일러 플래그입니다.
예를 들어, 리눅스와 BSD에서는
-fPIC가 사용됩니다.
- CFLAGSFORSHARED¶
인터프리터 목적 파일 빌드를 위해 추가된 C 플래그입니다.
기본값:
--enable-shared를 사용하는 경우$(CCSHARED)가 할당되며, 그렇지 않으면 빈 문자열이 제공됩니다.
- PY_CFLAGS¶
기본값:
$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS).
- PY_CFLAGS_NODIST¶
기본값:
$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal.Added in version 3.5.
- PY_STDMODULE_CFLAGS¶
인터프리터 목적 파일 빌드에 사용되는 C 플래그입니다.
기본값:
$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED).Added in version 3.7.
- PY_CORE_CFLAGS¶
기본값:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE.Added in version 3.2.
- PY_BUILTIN_MODULE_CFLAGS¶
posix모듈과 같이 표준 라이브러리 확장 모듈을 내장 모듈로 빌드하기 위한 컴파일러 플래그입니다.기본값:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN.Added in version 3.8.
- PURIFY¶
Purify 명령입니다. Purify는 메모리 디버거 프로그램입니다.
기본값: 빈 문자열(사용되지 않음).
3.5.3. 링커 플래그¶
- LINKCC¶
python및_testembed와 같은 프로그램을 빌드하는 데 사용되는 링커 명령입니다.기본값:
$(PURIFY) $(CC).
- CONFIGURE_LDFLAGS¶
./configure스크립트에 전달되는LDFLAGS변수의 값입니다.사용자가 미리 설정된 값을 덮어쓰지 않고 명령 줄에서 값 뒤에 추가할 수 있도록,
CFLAGS,LDFLAGS등을 직접 할당하지 마십시오.Added in version 3.2.
- LDFLAGS_NODIST¶
LDFLAGS_NODIST은CFLAGS_NODIST과 동일한 방식으로 사용됩니다. 파이썬이 설치된 후에도 특정 링커 플래그가LDFLAGS에 포함되어서는 안 되는 경우 이 변수를 사용하십시오 (gh-65320).특히,
LDFLAGS에는 다음 내용이 포함되어서는 안 됩니다.라이브러리 검색 경로를 설정하는 컴파일러 플래그
-L``입니다. ``-L플래그는 왼쪽에서 오른쪽 방향으로 처리되며,LDFLAGS`에 포함된 모든 플래그는 사용자 및 패키지에서 제공한 `-L`` 플래그보다 우선합니다.
- CONFIGURE_LDFLAGS_NODIST¶
./configure스크립트에 전달되는LDFLAGS_NODIST변수의 값입니다.Added in version 3.8.
- LDFLAGS¶
링커 플래그입니다. 예를 들어, 비표준 디렉터리 lib_dir 에 라이브러리가 있는 경우
-Llib_dir을 사용합니다.환경 변수에 지정된 디렉터리를 사용하여 확장 모듈을 빌드하려면
CPPFLAGS와LDFLAGS모두에 쉘의 값이 포함되어야 합니다.제공된 링커 플래그가 실행 파일에만 특정한 경우(예: GCC의
-pie플래그)에는EXE_LDFLAGS사용을 고려하십시오.
- LIBS¶
Python 실행 파일을 링크할 때 링커에 라이브러리를 전달하기 위한 링커 플래그입니다.
예시:
-lrt.
- LDSHARED¶
공유 라이브러리를 빌드하는 명령입니다.
기본값:
@LDSHARED@ $(PY_LDFLAGS).
- BLDSHARED¶
libpython공유 라이브러리를 빌드하는 명령입니다.기본값:
@BLDSHARED@ $(PY_CORE_LDFLAGS).
- PY_LDFLAGS¶
기본값:
$(CONFIGURE_LDFLAGS) $(LDFLAGS).
- PY_LDFLAGS_NODIST¶
기본값:
$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST).Added in version 3.8.
- PY_CORE_LDFLAGS¶
인터프리터 목적 파일 빌드에 사용되는 링커 플래그입니다.
Added in version 3.8.
- EXE_LDFLAGS¶
인터프리터와 같은 실행 파일 대상을 빌드하는 데 사용되는 링커 플래그입니다. 제공된 경우,
PY_CORE_EXE_LDFLAGS가PY_CORE_LDFLAGS를 대신하여 사용됩니다.Added in version 3.15.
- CONFIGURE_EXE_LDFLAGS¶
./configure스크립트에 전달되는EXE_LDFLAGS변수의 값입니다.Added in version 3.15.
- PY_CORE_EXE_LDFLAGS¶
인터프리터 및 실행 파일 대상을 빌드하는 데 사용되는 링커 플래그입니다.
기본값:
$(PY_CORE_LDFLAGS)Added in version 3.15.
각주
git clean -fdx 는 체크아웃을 “정리”하는 더욱 강력한 방법입니다. 이 명령은 Git이 인식하지 않는 모든 파일을 제거합니다. git bisect 를 사용하여 버그를 찾을 때 완전히 깨끗한 빌드를 보장하기 위해, 조사 단계 사이에서 사용이 권장됩니다 . 주의해서 사용하십시오. 이 명령은 커밋되지 않은 새 작업 내용을 포함하여 Git에 체크인되지 않은 모든 파일을 삭제합니다.