3. Python を構成する¶
3.1. Build requirements¶
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 |
||
libreadline または libedit [2] |
||
|
||
3.15.2 |
||
8.5.12 |
||
1.2.2.1 |
||
1.4.5 |
この表には、すべてのオプションモジュールが含まれているわけではありません。
特に、winreg のようなプラットフォーム固有のモジュールは記載していません。
参考
開発者ガイド には、すべてのモジュールのビルドに必要な依存関係の一覧と、一般的なプラットフォームでのインストール手順が記載されています。
--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. 生成されるファイル¶
ビルドの依存関係を減らすため、Python のソースコードには生成済みのファイルが複数含まれています。 生成済みファイルをすべて再生成するコマンドは次のとおりです。
make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure
make regen-sbom
make regen-unicodedata
The Makefile.pre.in file documents generated files, their inputs, and
tools used to regenerate them. Search for regen-* make targets.
3.2.1. 構成スクリプト¶
make regen-configure コマンドは、Tools/build/regen-configure.sh シェルスクリプトを使って aclocal.m4 ファイルと configure スクリプトを再生成します。
このシェルスクリプトは、ツールのバージョンを揃えて再現可能な出力を得るために Ubuntu コンテナを使用します。
コンテナの使用は必須ではなく、次のコマンドをローカルで実行することもできます。
autoreconf -ivf -Werror
生成されるファイルは、使用するツールの細かなバージョンの違いによって変わることがあります。
CPython が使用するコンテナには、Autoconf 2.72、Automake 1.16.5 に含まれる aclocal、および pkg-config 1.8.1 がインストールされています。
バージョン 3.13 で変更: configure の再生成に Autoconf 2.71 と aclocal 1.16.5 を使用するようになりました。
バージョン 3.14 で変更: configure の再生成に Autoconf 2.72 を使用するようになりました。
3.3. Configure options¶
次のコマンドを使用して、全ての configure スクリプトのオプションを表示できます:
./configure --help
Pythonのソース配布の中の Misc/SpecialBuilds.txt も参照してください。
3.3.1. General options¶
- --enable-loadable-sqlite-extensions¶
sqlite3モジュールの_sqlite拡張モジュールで、ロード可能な拡張機能をサポートします (デフォルトでは無効)。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 browser では.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/zoneinfoos.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¶
UTF-8 ベースのロケールへの C ロケールの強制を無効にします(デフォルトで有効)。
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 は wheel パッケージを
/usr/share/python-wheels/ディレクトリにインストールし、ensurepip._bundledパッケージはインストールしません。Added in version 3.10.
- --with-pkg-config=[check|yes|no]¶
configure がビルドの依存関係を検出するために pkg-config を使用するかどうかを設定します。
check(デフォルト): pkg-config はオプションです。yes: pkg-config は必須です。no: pkg-config が存在しても、 configure は使用しません。
Added in version 3.11.
- --with-missing-stdlib-config=FILE¶
不足している 標準ライブラリ モジュールに対するカスタムエラーメッセージを含む JSON 構成ファイルへのパス。
このオプションは、標準ライブラリのモジュールが欠けている場合や別途パッケージ化されている場合に、ディストリビューション固有の案内をユーザーに示したい 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(): 統計をファイルに出力し、統計をクリアします。
統計は、
/tmp/py_stats/(Unix) またはC:\temp\py_stats\(Windows) の任意の (おそらく一意な) ファイルに出力されます。 このディレクトリが存在しない場合、結果は標準エラー出力に出力されます。統計情報を読むには
Tools/scripts/summarize_stats.pyを使用してください。統計:
命令コード:
特殊化: 成功、失敗、ヒット、延期、ミス、特殊化解除、失敗の内訳;
実行回数;
命令コードのペアの実行回数。
呼び出し:
インライン化された Python 呼び出し;
PyEval 呼び出し;
プッシュされたフレーム;
作成されたフレームオブジェクト;
評価呼び出し: vector、generator、legacy、function VECTORCALL、build class、slot、function "ex"、API、method。
オブジェクト:
incref と decref;
インタープリタによる incref と decref;
割り当て: すべて、512 バイト、4 kiB、大容量;
解放;
フリーリストへの追加とフリーリストからの取得;
辞書の実体化と実体化の解除;
型キャッシュ;
最適化の試行;
作成された最適化トレースと実行された最適化トレース;
実行された uop。
ガベージコレクタ:
ガベージコレクション;
走査したオブジェクト;
回収したオブジェクト。
Added in version 3.11.
- --disable-gil¶
グローバルインタープリタロック (GIL) を使用せずに Python を実行できるようにします (フリースレッドビルド)。
Py_GIL_DISABLEDマクロを定義し、sys.abiflagsに"t"を追加します。詳しくは フリースレッドの CPython を参照してください。
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.
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¶
- CURSES_LIBS¶
cursesモジュールで使用するlibncursesまたはlibncursesw用の C コンパイラとリンカのフラグ。pkg-configの設定をオーバーライドします。
- GDBM_CFLAGS¶
- GDBM_LIBS¶
gdbm用の C コンパイラとリンカのフラグ。
- LIBEDIT_CFLAGS¶
- LIBFFI_CFLAGS¶
- LIBMPDEC_CFLAGS¶
- LIBMPDEC_LIBS¶
decimalモジュールで使用するlibmpdec用の C コンパイラとリンカのフラグ。pkg-configの設定をオーバーライドします。注釈
--with-system-libmpdecを指定しない限り、これらの環境変数は効果がありません。
- LIBLZMA_CFLAGS¶
- LIBREADLINE_CFLAGS¶
- LIBSQLITE3_CFLAGS¶
- LIBUUID_CFLAGS¶
- LIBZSTD_CFLAGS¶
- LIBZSTD_LIBS¶
compression.zstdモジュールで使用するlibzstd用の C コンパイラとリンカのフラグ。pkg-configの設定をオーバーライドします。Added in version 3.14.
- PANEL_CFLAGS¶
- PANEL_LIBS¶
PANEL 用の C コンパイラとリンカのフラグ。
pkg-configの設定をオーバーライドします。curses.panelモジュールで使用するlibpanelまたはlibpanelw用の C コンパイラとリンカのフラグ。pkg-configの設定をオーバーライドします。
- TCLTK_CFLAGS¶
- TCLTK_LIBS¶
TCLTK 用の C コンパイラとリンカのフラグ。
pkg-configの設定をオーバーライドします。
- ZLIB_CFLAGS¶
3.3.5. WebAssembly options¶
- --enable-wasm-dynamic-linking¶
WASM のダイナミックリンクサポートをオンにします。
ダイナミックリンクにより
dlopenが使用可能になります。 デッドコードの除去が制限されることと、機能が追加されることにより、実行ファイルのサイズが大きくなります。Added in version 3.11.
- --enable-wasm-pthreads¶
WASM の pthreads サポートをオンにします。
Added in version 3.11.
3.3.6. Install options¶
- --prefix=PREFIX¶
アーキテクチャに依存しないファイルを PREFIX にインストールします。Unix の場合、デフォルトは
/usr/localです。この値は、実行時に
sys.prefixを使って取得することができます。例えば、
--prefix="$HOME/.local/"を使用すると、自分のホームディレクトリに Python をインストールできます。
- --exec-prefix=EPREFIX¶
アーキテクチャ依存のファイルを EPREFIX にインストールします。デフォルトは
--prefixです。この値は、実行時に
sys.exec_prefixを使って取得することができます。
3.3.7. パフォーマンスに関するオプション¶
最良のパフォーマンスを得るには、--enable-optimizations --with-lto (PGO + LTO) を指定して Python を構成することを推奨します。
実験的な --enable-bolt フラグも、パフォーマンスの向上に使用できます。
- --enable-optimizations¶
PROFILE_TASKを使用して Profile Guided Optimization (PGO) を有効にします(デフォルトでは無効です)。Cコンパイラの Clang では、 PGO のために
llvm-profdataプログラムが必要です。macOS では、 GCC もこれを必要とします: GCC は macOS の Clang のエイリアスにすぎません。--enable-sharedと GCC を使用する場合は、libpython のセマンティックインターポジションも無効にします。 コンパイラとリンカのフラグに-fno-semantic-interpositionを追加します。注釈
ビルド中に、一部のソースファイルのプロファイルデータが利用できないというコンパイラの警告が表示されることがあります。 プロファイルデータの取得時にはコードの一部だけが実行されるため、この警告に問題はありません。 Clang でこの警告を無効にするには、
CFLAGSに-Wno-profile-instr-unprofiledを追加して明示的に抑制してください。Added in version 3.6.
バージョン 3.10 で変更: GCC で
-fno-semantic-interpositionを使用する。
- PROFILE_TASK¶
Makefile で使用する環境変数。 PGO 生成タスクに使用する Python のコマンドライン引数。
デフォルト:
-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 のバイナリ配布に必ず含まれているとは限りません。 このフラグを使用するには、
llvm-boltとmerge-fdataが利用可能である必要があります。BOLT はまだ比較的新しいプロジェクトであるため、現時点ではこのフラグを実験的なものと考えてください。 このツールは機械語を処理するため、処理が成功するかどうかは、ビルド環境、ほかの最適化用 configure 引数、CPU アーキテクチャの組み合わせに依存し、すべての組み合わせがサポートされているわけではありません。 LLVM 16 より前の BOLT は、状況によってクラッシュすることが知られています。 BOLT による最適化には LLVM 16 以降の使用を強く推奨します。
configure 変数
BOLT_INSTRUMENT_FLAGSとBOLT_APPLY_FLAGSを定義すると、llvm-bolt に渡すデフォルトの引数をオーバーライドできます。 前者はバイナリへの計測処理の挿入、後者はバイナリへの 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¶
評価ループで計算型 goto を有効にします (対応するコンパイラではデフォルトで有効)。
- --with-tail-call-interp¶
CPython で末尾呼び出しを使用するインタープリタを有効にします。 有効にする場合は、PGO (
--enable-optimizations) も有効にすることを強く推奨します。 このオプションには、適切な末尾呼び出しのサポートと preserve_none 呼び出し規約を備えた C コンパイラが必要です。 例えば、Clang 19 以降はこの機能をサポートしています。Added in version 3.14.
- --without-frame-pointers¶
フレームポインタを無効にします。 デフォルトでは有効です (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 アロケータを無効にします (デフォルトでは有効)。
フリースレッド ビルドには mimalloc が必要なため、このオプションを
--disable-gilと併用することはできません。PYTHONMALLOC環境変数も参照してください。
- --without-pymalloc¶
Python 専用のメモリアロケータ pymalloc を無効にします (デフォルトでは有効)。
PYTHONMALLOC環境変数も参照してください。
- --with-pymalloc-hugepages¶
pymalloc のアリーナでヒュージページのサポートを有効にします (デフォルトでは無効)。 有効にすると、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フラグを指定するか、MSBuild のUsePymallocHugepagesプロパティを設定してください。Added in version 3.15.
- --without-doc-strings¶
メモリ使用量を減らすため、静的なドキュメンテーション文字列を無効にします (デフォルトでは有効)。 Python で定義されたドキュメンテーション文字列には影響しません。
WITH_DOC_STRINGSマクロを定義しません。-
WITH_DOC_STRINGS¶
静的なドキュメンテーション文字列をビルドに含めるには、このマクロを定義します。
--without-doc-stringsを使用しない限り、デフォルトで定義されます。
PyDoc_STRVAR()マクロを参照してください。-
WITH_DOC_STRINGS¶
- --enable-profiling¶
gprofによる C レベルのコードのプロファイリングを有効にします (デフォルトでは無効)。
- --with-strict-overflow¶
C コンパイラのフラグに
-fstrict-overflowを追加します (デフォルトでは代わりに-fno-strict-overflowを追加します)。
- --without-remote-debug¶
PEP 768 で説明されているリモートデバッグのサポートを無効にします (デフォルトでは有効)。 このフラグを指定すると、PEP 768 にあるように、インタープリタが別のプロセスで Python ファイルの実行をスケジュールできるようにするコードをコンパイルしません。 これには、実行するコードをスケジュールする機能と、実行するコードを受信する機能の両方が含まれます。
-
Py_REMOTE_DEBUG¶
Python の構成時に
--without-remote-debugを指定しない限り、このマクロはデフォルトで定義されます。マクロが定義されていても、リモートデバッグが利用できない場合があることに注意してください (例えば、互換性のないプラットフォームの場合)。
Added in version 3.14.
-
Py_REMOTE_DEBUG¶
3.3.8. Python debug build¶
デバッグビルドは、 --with-pydebug 構成オプション付きでビルドされた Python です。
デバッグビルドの影響:
デフォルトですべての警告を表示します。
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-assertionsconfigure オプションも参照してください)。 実行時の主なチェックは次のとおりです:関数の引数が妥当かどうかのチェックを追加します。
未初期化のオブジェクトの使用を検出するため、Unicode オブジェクトと int オブジェクトの作成時に、そのメモリを特定のパターンで埋めます。
現在の例外をクリアまたは置換する可能性のある関数が、例外が発生している状態で呼び出されていないことを確認します。
メモリ解放関数が現在の例外を変更しないことをチェックします。
ガベージコレクタ (
gc.collect()関数) は、オブジェクトの整合性に関する基本的なチェックをいくつか実行します。Py_SAFE_DOWNCAST()マクロは、幅の広い型から狭い型へダウンキャストするときに、整数のアンダーフローとオーバーフローをチェックします。
Python 開発モード と --with-trace-refs configure オプションも参照してください。
バージョン 3.8 で変更: リリースビルドがデバッグビルドと ABI 互換になりました。
Py_DEBUG マクロを定義しても、Py_TRACE_REFS マクロが暗黙に定義されることはなくなりました (--with-trace-refs オプションを参照)。
ただし、デバッグビルドが公開するシンボルはリリースビルドよりも多く、デバッグビルドに対してビルドしたコードがリリースビルドと互換性を持つとは限りません。
3.3.9. デバッグオプション¶
- --with-pydebug¶
Python をデバッグモードでビルド します。
Py_DEBUGマクロを定義します (デフォルトでは無効)。
- --with-trace-refs¶
デバッグのために参照の追跡を有効にします (デフォルトでは無効)。
効果:
Py_TRACE_REFSマクロを定義します。sys.getobjects()関数を追加します。PYTHONDUMPREFS環境変数を追加します。
PYTHONDUMPREFS環境変数を使うと、Python の終了時にまだ生存しているオブジェクトとその参照カウントを出力できます。静的に割り当てられたオブジェクト は追跡しません。
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 の検出能力を高めるには、--without-pymallocと併用することも検討してください。 このオプションは、ASan が割り当てを追跡しない、小さなオブジェクト専用のアロケータを無効にします。Added in version 3.6.
- --with-memory-sanitizer¶
メモリ割り当てエラー検出ツール MemorySanitizer (
msan) を有効にします (デフォルトでは無効)。MSan を使わずにビルドしたライブラリが初期化したメモリに対し、MSan は誤検出を報告します。 そのため、すべての依存関係を MSan でビルドするか、それらを使用する拡張モジュールを
Modules/Setup.localで無効にしてください。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. リンカのオプション¶
Python の共有ライブラリ
libpythonのビルドを有効にします (デフォルトでは無効)。
- --without-static-libpython¶
libpythonMAJOR.MINOR.aをビルドせず、python.oをインストールしません (デフォルトではビルドされ、有効です)。Added in version 3.10.
- --enable-static-libpython-for-interpreter¶
Python インタープリタのバイナリ (
python3) を Python の共有ライブラリにリンクしません。 代わりに、--enable-sharedを使用しなかった場合と同様に、インタープリタをlibpythonに静的にリンクしますが、(ほかのプログラムが使用するための)libpython共有ライブラリのビルドは引き続き行います。--enable-sharedを使用しない場合、このオプションは何もしません。--enable-sharedを使った場合、デフォルトではビルドした共有ライブラリに Python インタープリタをリンクします。Added in version 3.15.
3.3.11. ライブラリのオプション¶
- --with-libs='lib1 ...'¶
追加のライブラリにリンクします (デフォルトでは無効)。
- --with-system-expat¶
インストール済みの
expatライブラリを使用してpyexpatモジュールをビルドします (デフォルトでは無効)。
- --with-system-libmpdec¶
インストール済みの
mpdecimalライブラリを使用して_decimal拡張モジュールをビルドします (デフォルトでは有効)。decimalモジュールを参照してください。Added in version 3.3.
バージョン 3.13 で変更: デフォルトでインストール済みの
mpdecimalライブラリを使用するようになりました。バージョン 3.15 で変更: インストール済みの
mpdecimalライブラリが見つからない場合に、同梱のライブラリが暗黙に選択されることはなくなりました。 Python 3.15 に限り、--with-system-libmpdec=noまたは--without-system-libmpdecを使用して明示的に選択することは引き続き可能です。バージョン 3.13 で非推奨、バージョン 3.16 で削除予定: Python 3.16 では、
mpdecimalライブラリのソースコードのコピーが同梱されなくなります。参考
- --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¶
C ライブラリ
libcを 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. Security options¶
- --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(デフォルト): Python が推奨する選択を使用します;openssl: OpenSSL のデフォルトをそのまま使用します;STRING: カスタムの文字列を使用します
sslモジュールを参照してください。Added in version 3.7.
バージョン 3.10 で変更:
pythonと STRING の設定では、プロトコルの最小バージョンも TLS 1.2 に設定します。
- --disable-safety¶
セキュリティ上の理由で OpenSSF が推奨する、パフォーマンスのオーバーヘッドを伴わないコンパイラオプションを無効にします。 このオプションを有効にしなければ、CPython は速度の低下を伴わない安全性のためのコンパイラオプションを使用してビルドされます。 このオプションを有効にすると、以下のコンパイラオプションを使用せずに CPython をビルドします。
--disable-safetyを指定すると、次のコンパイラオプションを無効にします:-fstack-protector-strong: スタック上のバッファオーバーフローに対する実行時のチェックを有効にします。
-Wtrampolines: 実行可能スタックを必要とするトランポリンに関する警告を有効にします。
Added in version 3.14.
- --enable-slower-safety¶
セキュリティ上の理由で OpenSSF が推奨する、オーバーヘッドを伴うコンパイラオプションを有効にします。 このオプションを有効にしなければ、CPython はパフォーマンスに影響する安全性のためのコンパイラオプションを使用せずにビルドされます。 このオプションを有効にすると、以下のコンパイラオプションを使用して CPython をビルドします。
--enable-slower-safetyを指定すると、次のコンパイラオプションを有効にします:-D_FORTIFY_SOURCE=3: libc の安全でない使用とバッファオーバーフローに対して、コンパイル時および実行時のチェックを行い、ソースコードを強化します。
Added in version 3.14.
3.3.13. macOS options¶
Mac/README.rst を参照。
- --enable-universalsdk¶
- --enable-universalsdk=SDKDIR¶
ユニバーサルバイナリのビルドを作成します (デフォルトでは無効)。 SDKDIR は、ビルドに使用する macOS SDK を指定します。
- --enable-framework¶
- --enable-framework=INSTALLDIR¶
従来の Unix 形式でのインストールに代えて、Python.framework を作成します (デフォルトでは無効)。 オプションの INSTALLDIR はインストール先のパスを指定します。
- --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 の Python フレームワークの名前を指定します。
--enable-frameworkが指定された場合のみ有効です (デフォルトではPython) 。
- --with-app-store-compliance¶
- --with-app-store-compliance=PATCH-FILE¶
Python 標準ライブラリは、 macOS と iOS の App Store による配布用に送信された場合に、自動検査ツールのエラーを発生させることが知られている文字列を含んでいます。このオプションを有効にした場合、 App Store コンプライアンスに合わせて修正することが知られているパッチのリストを適用します。カスタムのパッチファイルを指定することもできます。このオプションはデフォルトでは無効になっています。
Added in version 3.13.
3.3.14. iOS options¶
Platforms/Apple/iOS/README.md を参照してください。
- --enable-framework=INSTALLDIR¶
Python.framework を作成します。 macOS とは違い、インストールパスを指定する INSTALLDIR 引数は必須です。
- --with-framework-name=FRAMEWORK¶
フレームワークの名前を指定します (デフォルト:
Python) 。
3.3.15. Cross compiling options¶
クロスコンパイル (クロスビルドとも呼ばれます) を使用すると、異なる CPU アーキテクチャやプラットフォーム向けの Python をビルドできます。 クロスコンパイルには、ビルドプラットフォーム用の Python インタープリタが必要です。 ビルドに使用する Python のバージョンは、クロスコンパイルするホスト用 Python のバージョンと一致していなければなりません。
- --build=BUILD¶
BUILD でビルドするための設定です。通常は、 config.guess により推測されます。
- --host=HOST¶
HOST (ターゲットプラットフォーム) で動作するプログラムをビルドするためのクロスコンパイル。
- --with-build-python=path/to/python¶
クロスコンパイルのビルド時に使用する
pythonバイナリへのパス。Added in version 3.11.
- CONFIG_SITE=file¶
構成をオーバーライドするファイルを指す環境変数。
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 build system¶
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プログラムを作成します。Makefile によって C 拡張をビルドします (
Modules/Setupを参照)。
3.4.3. 主な Makefile ターゲット¶
- make¶
For the most part, when rebuilding after editing some code or refreshing your checkout from upstream, all you need to do is execute
make, which (per Make's semantics) builds the default target, the first one defined in the Makefile. By tradition (including in the CPython project) this is usually thealltarget. Theconfigurescript expands anautoconfvariable,@DEF_MAKE_ALL_RULE@to describe precisely which targetsmake allwill build. The choices are:profile-opt(--enable-optimizationsで構成した場合)bolt-opt(configured with--enable-bolt)build_emscripten(chosen if the host platform matcheswasm32-emscripten)build_wasm(chosen if the host platform matcheswasm32-wasi*)build_all(configured without explicitly using any of the others)
Make は、直近のソースファイルの変更に応じて、古くなったと判断したターゲット (オブジェクトファイルと実行ファイル) を再ビルドし、必要であれば
configureも再実行します。 ただし、ソースとターゲットの依存関係は多く、手作業で管理されているため、Make が再ビルドの必要なターゲットをすべて正しく検出するための情報を持っていないことがあります。 再ビルドされなかったターゲットによっては、さまざまな問題が発生する可能性があります。 ほかに原因の説明がつかないビルドやテストの問題がある場合は、make clean && makeを実行すると、ビルド時間は長くなりますが、依存関係の問題の大半を回避できるはずです。
- make platform¶
Build the
pythonprogram, but don't build the standard library extension modules. This generates a file namedplatformwhich contains a single line describing the details of the build platform, for example,macosx-14.3-arm64-3.12orlinux-x86_64-3.13.
- make profile-opt¶
プロファイルに基づく最適化 (PGO) を使用して Python をビルドします。 configure の
--enable-optimizationsオプションを使用すると、このターゲットをmakeコマンド (make allまたは単にmake) のデフォルトにできます。
- make clean¶
ビルドしたファイルを削除します。
- make distclean¶
make cleanの処理に加え、configure スクリプトが作成したファイルを削除します。 再びビルドする前に、configureを実行する必要があります。 [7]
- make install¶
allターゲットをビルドし、Python をインストールします。
- make test¶
allターゲットをビルドし、--fast-ciオプションを指定して、GUI テストを除いた Python のテストスイートを実行します。 変数:TESTOPTS: regrtest の追加のコマンドラインオプション。TESTPYTHONOPTS: Python の追加のコマンドラインオプション。TESTTIMEOUT: タイムアウトの秒数 (デフォルト: 10 分)。
- make ci¶
make testと似ていますが、-uguiを指定して GUI テストも実行します。Added in version 3.14.
- make buildbottest¶
make testと似ていますが、--fast-ciオプションの代わりに--slow-ciオプションを使用し、デフォルトのタイムアウトを 20 分にします。
3.4.4. C 拡張¶
sys モジュールのように、組み込みモジュールとしてビルドする C 拡張があります。
これらは 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__'
Other C extensions are built as dynamic libraries, like the _zoneinfo module.
They are built with the Py_BUILD_CORE_MODULE macro defined.
For example on Linux x86-64:
>>> import _zoneinfo
>>> _zoneinfo
<module '_zoneinfo' from '/.../lib.linux-x86_64-3.16/_zoneinfo.cpython-316d-x86_64-linux-gnu.so'>
>>> _zoneinfo.__file__
'/.../lib.linux-x86_64-3.16/_zoneinfo.cpython-316d-x86_64-linux-gnu.so'
Modules/Setup は、C 拡張をビルドする Makefile ターゲットの生成に使用します。
ファイルの先頭では、C 拡張を組み込みモジュールとしてビルドします。
*shared* マーカーの後で定義した拡張は、動的ライブラリとしてビルドします。
The PyAPI_FUNC(), PyAPI_DATA() and
PyMODINIT_FUNC macros of Include/exports.h are defined
differently depending if the Py_BUILD_CORE_MODULE macro is defined:
Use
Py_EXPORTED_SYMBOLif thePy_BUILD_CORE_MODULEis definedUse
Py_IMPORTED_SYMBOLotherwise.
共有ライブラリとしてビルドする C 拡張に誤って Py_BUILD_CORE_BUILTIN マクロを使用すると、PyInit_xxx() 関数がエクスポートされず、インポート時に ImportError が発生します。
3.5. コンパイラとリンカのフラグ¶
./configure スクリプトと環境変数によって設定され、Makefile で使用されるオプション。
3.5.1. プリプロセッサのフラグ¶
- CPPFLAGS¶
(Objective) C/C++ プリプロセッサのフラグ。 例えば、標準以外のディレクトリ include_dir にヘッダーファイルがある場合の
-Iinclude_dir。Both
CPPFLAGSandLDFLAGSneed to contain the shell's value to be able to build extension modules using the directories specified in the environment variables.
- 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 拡張のビルドに使用します。 Python のインストール後にCFLAGSに 含めるべきでない コンパイラフラグには、この変数を使用してください (gh-65320)。特に、
CFLAGSには次のものを含めないようにしてください:コンパイラフラグ
-I(インクルードファイルの検索パスの設定用)。-Iフラグは左から右へ処理されるため、CFLAGSにあるフラグは、ユーザーやパッケージが指定する-Iフラグよりも優先されてしまいます。hardening flags such as
-Werrorbecause distributions cannot control whether packages installed by users conform to such heightened standards.
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¶
共有ライブラリのビルドに使用するコンパイラフラグ。
例えば、Linux と 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と同じように使用します。 Python のインストール後にLDFLAGSに 含めるべきでない リンカフラグには、この変数を使用してください (gh-65320)。特に、
LDFLAGSには次のものを含めないようにしてください:コンパイラフラグ
-L(ライブラリの検索パスの設定用)。-Lフラグは左から右へ処理されるため、LDFLAGSにあるフラグは、ユーザーやパッケージが指定する-Lフラグよりも優先されてしまいます。
- CONFIGURE_LDFLAGS_NODIST¶
./configureスクリプトに渡されたLDFLAGS_NODIST変数の値。Added in version 3.8.
- LDFLAGS¶
リンカのフラグ。 例えば、標準以外のディレクトリ lib_dir にライブラリがある場合の
-Llib_dir。Both
CPPFLAGSandLDFLAGSneed to contain the shell's value to be able to build extension modules using the directories specified in the environment variables.指定するリンカフラグが 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 にチェックインされていないすべてのファイルを削除するため、注意して使用してください。