3. Python を構成する

3.1. ビルド要件

CPython をビルドするためには、次のものが必要です:

バージョン 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 モジュール

libbz2

bz2

libffi

3.3.0 推奨

ctypes

liblzma

lzma

libmpdec

2.5.0

decimal [1]

libreadline または libedit [2]

readline

libuuid

_uuid [3]

ncurses [4]

curses

OpenSSL

[6]

ssl, hashlib [5]

SQLite

3.15.2

sqlite3

Tcl/Tk

8.5.12

tkinter, IDLE, turtle

zlib

1.2.2.1

zlib, gzip, ensurepip

zstd

1.4.5

compression.zstd

この表には、すべてのオプションモジュールが含まれているわけではありません。 特に、winreg のようなプラットフォーム固有のモジュールは記載していません。

参考

バージョン 3.1 で変更: tkinter には Tcl/Tk バージョン 8.3.1 が必要となりました。

バージョン 3.5 で変更: tkinter には Tcl/Tk バージョン 8.4 が必要となりました。

バージョン 3.7 で変更: hashlib と ssl には OpenSSL 1.0.2 が必要となりました。

バージョン 3.10 で変更: hashlib と ssl には OpenSSL 1.1.1 が必要となりました。 sqlite3 には SQLite 3.7.15 が必要となりました。

バージョン 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

Makefile.pre.in ファイルには、生成されるファイル、その入力、および再生成に使用するツールが記載されています。 regen-* という make ターゲットを検索してください。

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オプション

次のコマンドを使用して、全ての configure スクリプトのオプションを表示できます:

./configure --help

Pythonのソース配布の中の Misc/SpecialBuilds.txt も参照してください。

3.3.1. 一般的なオプション

--enable-loadable-sqlite-extensions

sqlite3 モジュールの _sqlite 拡張モジュールで、ロード可能な拡張機能をサポートします (デフォルトでは無効)。

sqlite3 モジュールの sqlite3.Connection.enable_load_extension() メソッドを参照してください。

Added in version 3.6.

--disable-ipv6

IPv6サポートを無効にします(サポートされている場合はデフォルトで有効)、 socket モジュールを参照してください。

--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/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

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
BZIP2_LIBS

bz2 モジュールで使用する libbz2 に Python をリンクするための C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

CURSES_CFLAGS
CURSES_LIBS

curses モジュールで使用する libncurses または libncursesw 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

GDBM_CFLAGS
GDBM_LIBS

gdbm 用の C コンパイラとリンカのフラグ。

LIBEDIT_CFLAGS
LIBEDIT_LIBS

readline モジュールで使用する libedit 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

LIBFFI_CFLAGS
LIBFFI_LIBS

ctypes モジュールで使用する libffi 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

LIBMPDEC_CFLAGS
LIBMPDEC_LIBS

decimal モジュールで使用する libmpdec 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

注釈

--with-system-libmpdec を指定しない限り、これらの環境変数は効果がありません。

LIBLZMA_CFLAGS
LIBLZMA_LIBS

lzma モジュールで使用する liblzma 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

LIBREADLINE_CFLAGS
LIBREADLINE_LIBS

readline モジュールで使用する libreadline 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

LIBSQLITE3_CFLAGS
LIBSQLITE3_LIBS

sqlite3 モジュールで使用する libsqlite3 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

LIBUUID_CFLAGS
LIBUUID_LIBS

uuid モジュールで使用する libuuid 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

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
ZLIB_LIBS

gzip モジュールで使用する libzlib 用の C コンパイラとリンカのフラグ。 pkg-config の設定をオーバーライドします。

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/" を使用すると、自分のホームディレクトリに Python をインストールできます。

--exec-prefix=EPREFIX

アーキテクチャ依存のファイルを EPREFIX にインストールします。デフォルトは --prefix です。

この値は、実行時に sys.exec_prefix を使って取得することができます。

--disable-test-modules

test パッケージや _testcapi 拡張モジュール(デフォルトでビルド、インストールされます)のようなテストモジュールをビルド、インストールしないようにします。

Added in version 3.10.

--with-ensurepip=[upgrade|install|no]

Python のインストール時に実行される ensurepip コマンドを選択します:

  • upgrade (デフォルト): python -m ensurepip --altinstall --upgrade コマンドを実行します。

  • install: python -m ensurepip --altinstall コマンドを実行します。

  • no: ensurepip を実行しない;

Added in version 3.6.

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() マクロを参照してください。

--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.

3.3.8. Python デバッグビルド

デバッグビルドは、 --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-assertions configure オプションも参照してください)。 実行時の主なチェックは次のとおりです:

    • 関数の引数が妥当かどうかのチェックを追加します。

    • 未初期化のオブジェクトの使用を検出するため、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

デバッグのために参照の追跡を有効にします (デフォルトでは無効)。

効果:

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. リンカのオプション

--enable-shared

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 を使用しない場合、このオプションは何もしません。

The default (when -enable-shared is used) is to link the Python interpreter against the built shared library.

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. セキュリティのオプション

--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 のオプション

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 のオプション

Platforms/Apple/iOS/README.md を参照してください。

--enable-framework=INSTALLDIR

Python.framework を作成します。 macOS とは違い、インストールパスを指定する INSTALLDIR 引数は必須です。

--with-framework-name=FRAMEWORK

フレームワークの名前を指定します (デフォルト: Python) 。

3.3.15. クロスコンパイルのオプション

クロスコンパイル (クロスビルドとも呼ばれます) を使用すると、異なる 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 ビルドシステム

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 ターゲット

3.4.3.1. make

コードの一部を編集した後や、上流の変更を取り込んでチェックアウトを更新した後に再ビルドする場合、たいていは make を実行するだけで済みます。 Make の動作に従い、Makefile で最初に定義されたターゲットであるデフォルトのターゲットがビルドされます。 慣例として (CPython プロジェクトでも)、通常は all がそのターゲットです。 configure スクリプトは autoconf 変数 @DEF_MAKE_ALL_RULE@ を展開して、make all がビルドするターゲットを正確に指定します。 選択肢は次の三つです:

  • profile-opt (--enable-optimizations で構成した場合)

  • build_wasm (ホストプラットフォームが wasm32-wasi* または wasm32-emscripten に一致する場合に選択)

  • build_all (ほかの二つを明示的に使用せずに構成した場合)

Make は、直近のソースファイルの変更に応じて、古くなったと判断したターゲット (オブジェクトファイルと実行ファイル) を再ビルドし、必要であれば configure も再実行します。 ただし、ソースとターゲットの依存関係は多く、手作業で管理されているため、Make が再ビルドの必要なターゲットをすべて正しく検出するための情報を持っていないことがあります。 再ビルドされなかったターゲットによっては、さまざまな問題が発生する可能性があります。 ほかに原因の説明がつかないビルドやテストの問題がある場合は、make clean && make を実行すると、ビルド時間は長くなりますが、依存関係の問題の大半を回避できるはずです。

3.4.3.2. make platform

python プログラムをビルドしますが、標準ライブラリの拡張モジュールはビルドしません。 ビルドプラットフォームの詳細を表す 1 行 (例えば macosx-14.3-arm64-3.12 や linux-x86_64-3.13) を含む、platform という名前のファイルを生成します。

3.4.3.3. make profile-opt

プロファイルに基づく最適化 (PGO) を使用して Python をビルドします。 configure の --enable-optimizations オプションを使用すると、このターゲットを make コマンド (make all または単に make) のデフォルトにできます。

3.4.3.4. make clean

ビルドしたファイルを削除します。

3.4.3.5. make distclean

make clean の処理に加え、configure スクリプトが作成したファイルを削除します。 再びビルドする前に、configure を実行する必要があります。 [7]

3.4.3.6. make install

all ターゲットをビルドし、Python をインストールします。

3.4.3.7. make test

all ターゲットをビルドし、--fast-ci オプションを指定して、GUI テストを除いた 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 拡張

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__'

_asyncio モジュールのように、動的ライブラリとしてビルドする C 拡張もあります。 これらは 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* マーカーの後で定義した拡張は、動的ライブラリとしてビルドします。

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_SYMBOL if the Py_BUILD_CORE_MODULE is defined

  • Use Py_IMPORTED_SYMBOL otherwise.

共有ライブラリとしてビルドする C 拡張に誤って Py_BUILD_CORE_BUILTIN マクロを使用すると、PyInit_xxx() 関数がエクスポートされず、インポート時に ImportError が発生します。

3.5. コンパイラとリンカのフラグ

./configure スクリプトと環境変数によって設定され、Makefile で使用されるオプション。

3.5.1. プリプロセッサのフラグ

CONFIGURE_CPPFLAGS

./configure スクリプトに渡された CPPFLAGS 変数の値。

Added in version 3.6.

CPPFLAGS

(Objective) C/C++ プリプロセッサのフラグ。 例えば、標準以外のディレクトリ include_dir にヘッダーファイルがある場合の -Iinclude_dir。

Both CPPFLAGS and LDFLAGS need 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 -Werror because 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

./configure スクリプトに渡された CFLAGS 変数の値。

Added in version 3.2.

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 CPPFLAGS and LDFLAGS need 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.

脚注