> **Источник:** https://python-all.ru/3.10/using/configure.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 3. Настройка Python

## 3.1. Параметры configure

Выведите список всех параметров сценария `./configure` с помощью:

```python
./configure --help
```

См. также `Misc/SpecialBuilds.txt` в дистрибутиве исходного кода Python.

### 3.1.1. Общие параметры

#### `--enable-loadable-sqlite-extensions`

Поддержка загружаемых расширений в модуле расширения `_sqlite` (по умолчанию – нет).

См. метод [`sqlite3.Connection.enable_load_extension()`](https://python-all.ru/3.10/library/sqlite3.html#sqlite3.Connection.enable_load_extension) модуля [`sqlite3`](https://python-all.ru/3.10/library/sqlite3.html#module-sqlite3).

Новое в версии 3.6.

#### `--disable-ipv6`

Отключить поддержку IPv6 (включена по умолчанию, если поддерживается), см. модуль [`socket`](https://python-all.ru/3.10/library/socket.html#module-socket).

#### `--enable-big-digits=[15|30]`

Определить размер в битах цифр Python [`int`](https://python-all.ru/3.10/library/functions.html#int): 15 или 30 бит.

По умолчанию количество битов выбирается в зависимости от `sizeof(void*)`: 30 бит, если размер `void*` составляет 64 бита или больше, иначе 15 бит.

Определить `PYLONG_BITS_IN_DIGIT` как `15` или `30`.

См. [`sys.int_info.bits_per_digit`](https://python-all.ru/3.10/library/sys.html#sys.int_info).

#### `--with-cxx-main`

#### `--with-cxx-main=COMPILER`

Скомпилировать функцию `main()` Python и слинковать исполняемый файл Python с C++ компилятором: `$CXX`, или *COMPILER*, если указан.

#### `--with-suffix=SUFFIX`

Установить суффикс исполняемого файла Python равным *SUFFIX*.

Суффикс по умолчанию – `.exe` в Windows и macOS (исполняемый файл `python.exe`), и пустая строка на других платформах (исполняемый файл `python`).

#### `--with-tzpath=<list of absolute paths separated by pathsep>`

Выбрать путь поиска часового пояса по умолчанию для [`zoneinfo.TZPATH`](https://python-all.ru/3.10/library/zoneinfo.html#zoneinfo.TZPATH). См. [конфигурацию времени компиляции](https://python-all.ru/3.10/library/zoneinfo.html#zoneinfo-data-compile-time-config) модуля [`zoneinfo`](https://python-all.ru/3.10/library/zoneinfo.html#module-zoneinfo).

По умолчанию: `/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo`.

См. разделитель путей [`os.pathsep`](https://python-all.ru/3.10/library/os.html#os.pathsep).

Новое в версии 3.9.

#### `--without-decimal-contextvar`

Сборка модуля расширения `_decimal` с контекстом, локальным для потока, а не с контекстом, локальным для корутины (по умолчанию). См. модуль [`decimal`](https://python-all.ru/3.10/library/decimal.html#module-decimal).

См. [`decimal.HAVE_CONTEXTVAR`](https://python-all.ru/3.10/library/decimal.html#decimal.HAVE_CONTEXTVAR) и модуль [`contextvars`](https://python-all.ru/3.10/library/contextvars.html#module-contextvars).

Новое в версии 3.9.

#### `--with-dbmliborder=db1:db2:...`

Переопределяет порядок проверки бэкендов БД для модуля [`dbm`](https://python-all.ru/3.10/library/dbm.html#module-dbm).

Допустимое значение – строка с именами бэкендов, разделённая двоеточиями (`:`):

- `ndbm`;
- `gdbm`;
- `bdb`.

#### `--without-c-locale-coercion`

Отключает приведение локали C к локали на основе UTF-8 (включено по умолчанию).

Не определять макрос `PY_COERCE_C_LOCALE`.

См. [`PYTHONCOERCECLOCALE`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONCOERCECLOCALE) и [**PEP 538**](https://python-all.ru/3.10/using/configure.html).

#### `--with-platlibdir=DIRNAME`

Имя каталога библиотек Python (по умолчанию `lib`).

Fedora и SuSE используют `lib64` на 64-разрядных платформах.

См. [`sys.platlibdir`](https://python-all.ru/3.10/library/sys.html#sys.platlibdir).

Новое в версии 3.9.

#### `--with-wheel-pkg-dir=PATH`

Каталог пакетов wheel, используемых модулем [`ensurepip`](https://python-all.ru/3.10/library/ensurepip.html#module-ensurepip) (по умолчанию отсутствует).

Некоторые политики упаковки дистрибутивов Linux рекомендуют не включать зависимости. Например, Fedora устанавливает пакеты wheel в каталог `/usr/share/python-wheels/` и не устанавливает пакет `ensurepip._bundled`.

Новое в версии 3.10.

### 3.1.2. Параметры установки

#### `--prefix=PREFIX`

Устанавливает архитектурно-независимые файлы в PREFIX. В Unix по умолчанию используется `/usr/local`.

Это значение можно получить во время выполнения с помощью [`sys.prefix`](https://python-all.ru/3.10/library/sys.html#sys.prefix).

Например, можно использовать `--prefix="$HOME/.local/"` для установки Python в домашний каталог.

#### `--exec-prefix=EPREFIX`

Устанавливает архитектурно-зависимые файлы в EPREFIX, по умолчанию [`--prefix`](https://python-all.ru/3.10/using/configure.html#cmdoption-prefix).

Это значение можно получить во время выполнения с помощью [`sys.exec_prefix`](https://python-all.ru/3.10/library/sys.html#sys.exec_prefix).

#### `--disable-test-modules`

Не собирать и не устанавливать тестовые модули, такие как пакет [`test`](https://python-all.ru/3.10/library/test.html#module-test) или модуль расширения `_testcapi` (собирается и устанавливается по умолчанию).

Новое в версии 3.10.

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

Выбирает команду [`ensurepip`](https://python-all.ru/3.10/library/ensurepip.html#module-ensurepip), запускаемую при установке Python:

- `upgrade` (по умолчанию): запустить команду `python -m ensurepip --altinstall --upgrade` .
- `install`: запустить команду `python -m ensurepip --altinstall`;
- `no`: не запускать ensurepip;

Новое в версии 3.6.

### 3.1.3. Параметры производительности

Для достижения наилучшей производительности рекомендуется настраивать Python с использованием `--enable-optimizations --with-lto` (PGO + LTO).

#### `--enable-optimizations`

Включает профильную оптимизацию (PGO) с помощью [`PROFILE_TASK`](https://python-all.ru/3.10/using/configure.html#envvar-PROFILE_TASK) (по умолчанию отключено).

Компилятору Clang требуется программа `llvm-profdata` для PGO. На macOS она также требуется GCC: GCC – это просто псевдоним Clang на macOS.

Также отключает семантическое переопределение символов в libpython, если используются `--enable-shared` и GCC: добавьте `-fno-semantic-interposition` в флаги компилятора и компоновщика.

Новое в версии 3.6.

Изменено в версии 3.10: Используйте `-fno-semantic-interposition` в GCC.

#### `PROFILE_TASK`

Переменная окружения, используемая в Makefile: аргументы командной строки Python для задачи генерации PGO.

По умолчанию: `-m test --pgo --timeout=$(TESTTIMEOUT)`.

Новое в версии 3.8.

#### `--with-lto`

Включает оптимизацию во время компоновки (LTO) в любой сборке (по умолчанию отключено).

Компилятору Clang требуется `llvm-ar` для LTO (`ar` в macOS), а также компоновщик, поддерживающий LTO (`ld.gold` или `lld`).

Новое в версии 3.6.

#### `--with-computed-gotos`

Включает вычисляемые переходы в цикле вычислений (включено по умолчанию на поддерживаемых компиляторах).

#### `--without-pymalloc`

Отключает специализированный распределитель памяти Python [pymalloc](https://python-all.ru/3.10/c-api/memory.html#pymalloc) (включён по умолчанию).

См. также переменную окружения [`PYTHONMALLOC`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONMALLOC).

#### `--without-doc-strings`

Отключает статические строки документации для уменьшения потребления памяти (включено по умолчанию). Строки документации, определённые в Python, не затрагиваются.

Не определять макрос `WITH_DOC_STRINGS`.

См. макрос `PyDoc_STRVAR()`.

#### `--enable-profiling`

Включает профилирование кода на уровне C с помощью `gprof` (отключено по умолчанию).

### 3.1.4. Отладочная сборка Python

Отладочная сборка – это Python, собранный с опцией конфигурации [`--with-pydebug`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-pydebug).

Эффекты отладочной сборки:

- Показывать все предупреждения по умолчанию: список фильтров предупреждений по умолчанию пуст в модуле [`warnings`](https://python-all.ru/3.10/library/warnings.html#module-warnings).
- Добавляет `d` в [`sys.abiflags`](https://python-all.ru/3.10/library/sys.html#sys.abiflags).
- Добавляет функцию `sys.gettotalrefcount()`.
- Добавляет опцию командной строки [`-X showrefcount`](https://python-all.ru/3.10/using/cmdline.html#cmdoption-X).
- Добавляет переменную окружения [`PYTHONTHREADDEBUG`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONTHREADDEBUG).
- Добавляет поддержку переменной `__ltrace__`: включение низкоуровневой трассировки в цикле выполнения байт-кода, если переменная определена.
- Устанавливает [отладочные привязки на распределители памяти](https://python-all.ru/3.10/c-api/memory.html#default-memory-allocators) для обнаружения переполнения буфера и других ошибок памяти.
- Определяет макросы `Py_DEBUG` и `Py_REF_DEBUG`.
- Добавить проверки времени выполнения: код, окружённый `#ifdef Py_DEBUG` и `#endif`. Включить утверждения `assert(...)` и `_PyObject_ASSERT(...)`: не определять макрос `NDEBUG` (см. также опцию конфигурации [`--with-assertions`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-assertions)). Основные проверки времени выполнения:

  - Добавляет проверки корректности аргументов функций.
  - Объекты Unicode и int создаются с заполнением памяти шаблоном для обнаружения использования неинициализированных объектов.
  - Гарантирует, что функции, которые могут очистить или заменить текущее исключение, не вызываются при возникшем исключении.
  - Сборщик мусора (функция [`gc.collect()`](https://python-all.ru/3.10/library/gc.html#gc.collect)) выполняет базовые проверки корректности объектов.
  - Макрос `Py_SAFE_DOWNCAST()` проверяет целочисленное переполнение (underflow и overflow) при понижающем приведении от широких типов к узким.

См. также [режим разработки Python](https://python-all.ru/3.10/library/devmode.html#devmode) и опцию конфигурации [`--with-trace-refs`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-trace-refs).

Изменено в версии 3.8: Сборки для выпуска и отладочные сборки теперь совместимы по ABI: определение макроса `Py_DEBUG` больше не подразумевает макрос `Py_TRACE_REFS` (см. опцию [`--with-trace-refs`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-trace-refs)), который вводил единственную несовместимость ABI.

### 3.1.5. Отладочные опции

#### `--with-pydebug`

[Собрать Python в отладочном режиме](https://python-all.ru/3.10/using/configure.html#debug-build): определяет макрос `Py_DEBUG` (отключён по умолчанию).

#### `--with-trace-refs`

Включает отслеживание ссылок для целей отладки (отключено по умолчанию).

Эффекты:

- Определяет макрос `Py_TRACE_REFS`.
- Добавляет функцию `sys.getobjects()`.
- Добавляет переменную окружения [`PYTHONDUMPREFS`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONDUMPREFS).

Эта сборка несовместима по ABI со сборкой для выпуска (сборкой по умолчанию) или отладочной сборкой (макросы `Py_DEBUG` и `Py_REF_DEBUG`).

Новое в версии 3.8.

#### `--with-assertions`

Сборка с включёнными C-утверждениями (по умолчанию нет): `assert(...);` и `_PyObject_ASSERT(...);`.

Если установлен, макрос `NDEBUG` не определяется в переменной компилятора [`OPT`](https://python-all.ru/3.10/using/configure.html#envvar-OPT).

См. также опцию [`--with-pydebug`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-pydebug) ([отладочная сборка](https://python-all.ru/3.10/using/configure.html#debug-build)), которая также включает утверждения.

Новое в версии 3.6.

#### `--with-valgrind`

Включить поддержку Valgrind (по умолчанию нет).

#### `--with-dtrace`

Включить поддержку DTrace (по умолчанию нет).

См. [Инструментирование CPython с помощью DTrace и SystemTap](https://python-all.ru/3.10/howto/instrumentation.html#instrumentation).

Новое в версии 3.6.

#### `--with-address-sanitizer`

Включает детектор ошибок памяти AddressSanitizer, `asan` (по умолчанию нет).

Новое в версии 3.6.

#### `--with-memory-sanitizer`

Включить детектор ошибок выделения памяти MemorySanitizer, `msan` (по умолчанию нет).

Новое в версии 3.6.

#### `--with-undefined-behavior-sanitizer`

Включить детектор неопределённого поведения UndefinedBehaviorSanitizer, `ubsan` (по умолчанию нет).

Новое в версии 3.6.

### 3.1.6. Параметры компоновщика

#### `--enable-shared`

Включает сборку разделяемой библиотеки Python: `libpython` (по умолчанию выключено).

#### `--without-static-libpython`

Не собирать `libpythonMAJOR.MINOR.a` и не устанавливать `python.o` (собирается и устанавливается по умолчанию).

Новое в версии 3.10.

### 3.1.7. Параметры библиотек

#### `--with-libs='lib1 ...'`

Линковаться с дополнительными библиотеками (по умолчанию нет).

#### `--with-system-expat`

Собирать модуль `pyexpat`, используя установленную библиотеку `expat` (по умолчанию нет).

#### `--with-system-ffi`

Собрать модуль расширения `_ctypes`, используя установленную `ffi` библиотеку, см. модуль [`ctypes`](https://python-all.ru/3.10/library/ctypes.html#module-ctypes) (по умолчанию зависит от системы).

#### `--with-system-libmpdec`

Собрать модуль расширения `_decimal`, используя установленную библиотеку `mpdec`; см. модуль [`decimal`](https://python-all.ru/3.10/library/decimal.html#module-decimal) (по умолчанию нет).

Новое в версии 3.3.

#### `--with-readline=editline`

Использовать библиотеку `editline` в качестве бэкенда модуля [`readline`](https://python-all.ru/3.10/library/readline.html#module-readline).

Определяет макрос `WITH_EDITLINE`.

Новое в версии 3.10.

#### `--without-readline`

Не собирать модуль [`readline`](https://python-all.ru/3.10/library/readline.html#module-readline) (собирается по умолчанию).

Не определять макрос `HAVE_LIBREADLINE`.

Новое в версии 3.10.

#### `--with-tcltk-includes='-I...'`

Переопределение поиска включаемых файлов Tcl и Tk.

#### `--with-tcltk-libs='-L...'`

Переопределение поиска библиотек Tcl и Tk.

#### `--with-libm=STRING`

Переопределить математическую библиотеку `libm` на *STRING* (по умолчанию зависит от системы).

#### `--with-libc=STRING`

Переопределить библиотеку C `libc` на *STRING* (по умолчанию зависит от системы).

#### `--with-openssl=DIR`

Корневой каталог OpenSSL.

Добавлено в версии 3.7.

#### `--with-openssl-rpath=[no|auto|DIR]`

Задать каталог библиотек времени выполнения (rpath) для библиотек OpenSSL:

- `no` (по умолчанию): не устанавливать rpath;
- `auto`: автоматически определять rpath из [`--with-openssl`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-openssl) и `pkg-config`;
- *DIR*: указать явный rpath.

Новое в версии 3.10.

### 3.1.8. Параметры безопасности

#### `--with-hash-algorithm=[fnv|siphash24]`

Выберите алгоритм хеширования для использования в `Python/pyhash.c`:

- `siphash24` (по умолчанию).
- `fnv`;

Новое в версии 3.4.

#### `--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2`

Встроенные хеш-модули:

- `md5`;
- `sha1`;
- `sha256`;
- `sha512`;
- `sha3` (с shake);
- `blake2`.

Новое в версии 3.9.

#### `--with-ssl-default-suites=[python|openssl|STRING]`

Переопределить строку наборов шифров OpenSSL по умолчанию:

- `python` (по умолчанию): использовать предпочтительный выбор Python;
- `openssl`: оставить настройки OpenSSL по умолчанию без изменений;
- *STRING*: использовать произвольную строку

См. модуль [`ssl`](https://python-all.ru/3.10/library/ssl.html#module-ssl).

Добавлено в версии 3.7.

Изменено в версии 3.10: Настройки `python` и *STRING* также устанавливают TLS 1.2 в качестве минимальной версии протокола.

### 3.1.9. Параметры macOS

См. `Mac/README.rst`.

#### `--enable-universalsdk`

#### `--enable-universalsdk=SDKDIR`

Создание универсальной сборки двоичного файла. *SDKDIR* указывает, какой macOS SDK следует использовать для сборки (по умолчанию нет).

#### `--enable-framework`

#### `--enable-framework=INSTALLDIR`

Создаёт Python.framework вместо традиционной установки в Unix. Необязательный *INSTALLDIR* определяет путь установки (по умолчанию – нет).

#### `--with-universal-archs=ARCH`

Определяет тип универсального бинарного файла, который будет создан. Этот параметр работает, только если указан [`--enable-universalsdk`](https://python-all.ru/3.10/using/configure.html#cmdoption-1).

Варианты:

- `universal2`;
- `32-bit`;
- `64-bit`;
- `3-way`;
- `intel`;
- `intel-32`;
- `intel-64`;
- `all`.

#### `--with-framework-name=FRAMEWORK`

Задаёт имя для python framework в macOS. Работает только при указанном [`--enable-framework`](https://python-all.ru/3.10/using/configure.html#cmdoption-2) (по умолчанию: `Python`).

## 3.2. Система сборки Python

### 3.2.1. Основные файлы системы сборки

- `configure.ac` =\> `configure`;
- `Makefile.pre.in` =\> `Makefile` (создаётся с помощью `configure`);
- `pyconfig.h` (создаётся с помощью `configure`);
- `Modules/Setup`: расширения на C, собираемые Makefile с помощью `Module/makesetup` shell-скрипта;
- `setup.py`: расширения C, собранные с использованием модуля [`distutils`](https://python-all.ru/3.10/library/distutils.html#module-distutils).

### 3.2.2. Основные этапы сборки

- C-файлы (`.c`) компилируются в объектные файлы (`.o`).
- Статическая библиотека `libpython` (`.a`) создаётся из объектных файлов.
- `python.o` и статическая библиотека `libpython` компонуются в итоговую программу `python`.
- Расширения C собираются Makefile (см. `Modules/Setup`) и `python setup.py build`.

### 3.2.3. Основные цели Makefile

- `make`: Собрать Python со стандартной библиотекой.
- `make platform:`: собрать программу `python`, но не собирать модули расширений стандартной библиотеки.
- `make profile-opt`: собрать Python с использованием профильной оптимизации (PGO). Чтобы сделать это целью по умолчанию команды `make` (`make all` или просто `make`), можно использовать опцию configure [`--enable-optimizations`](https://python-all.ru/3.10/using/configure.html#cmdoption-enable-optimizations).
- `make buildbottest`: собрать Python и запустить тестовый набор Python, так же как сборочные боты тестируют Python. Установите переменную `TESTTIMEOUT` (в секундах), чтобы изменить тайм-аут теста (по умолчанию 1200: 20 минут).
- `make install`: собрать и установить Python.
- `make regen-all`: перегенерировать (почти) все сгенерированные файлы; `make regen-stdlib-module-names` и `autoconf` должны быть запущены отдельно для оставшихся сгенерированных файлов.
- `make clean`: удалить собранные файлы.
- `make distclean`: то же, что `make clean`, но также удаляет файлы, созданные скриптом configure.

### 3.2.4. Расширения C

Некоторые расширения C собираются как встроенные модули, например модуль `sys`. Они собираются с определённым макросом `Py_BUILD_CORE_BUILTIN`. Встроенные модули не имеют атрибута `__file__`:

```python
>>> 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:

```python
>>> 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` используется для генерации целей Makefile для сборки расширений C. В начале файлов расширения C собираются как встроенные модули. Расширения, определённые после маркера `*shared*`, собираются как динамические библиотеки.

Скрипт `setup.py` собирает расширения C только как разделяемые библиотеки с помощью модуля [`distutils`](https://python-all.ru/3.10/library/distutils.html#module-distutils).

Макросы `PyAPI_FUNC()`, `PyAPI_API()` и `PyMODINIT_FUNC()` из `Include/pyport.h` определяются по-разному в зависимости от того, определён ли макрос `Py_BUILD_CORE_MODULE`:

- Используйте `Py_EXPORTED_SYMBOL`, если `Py_BUILD_CORE_MODULE` определён.
- В противном случае используйте `Py_IMPORTED_SYMBOL`.

Если макрос `Py_BUILD_CORE_BUILTIN` по ошибке используется для расширения C, собранного как разделяемая библиотека, его функция `PyInit_xxx()` не экспортируется, что вызывает [`ImportError`](https://python-all.ru/3.10/library/exceptions.html#ImportError) при импорте.

## 3.3. Флаги компилятора и компоновщика

Параметры, задаваемые сценарием `./configure` и переменными окружения, и используемые `Makefile`.

### 3.3.1. Флаги препроцессора

#### `CONFIGURE_CPPFLAGS`

Значение переменной [`CPPFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CPPFLAGS), передаваемое сценарию `./configure`.

Новое в версии 3.6.

#### `CPPFLAGS`

Флаги препроцессора (Objective) C/C++, например `-I<include dir>`, если заголовочные файлы находятся в нестандартном каталоге `<include dir>`.

И [`CPPFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CPPFLAGS), и [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) должны содержать значение из оболочки, чтобы setup.py мог собирать модули расширения, используя каталоги, указанные в переменных окружения.

#### `BASECPPFLAGS`

Новое в версии 3.4.

#### `PY_CPPFLAGS`

Дополнительные флаги препроцессора, добавляемые при сборке объектных файлов интерпретатора.

По умолчанию: `$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)`.

Новое в версии 3.2.

### 3.3.2. Флаги компилятора

#### `CC`

Команда компилятора C.

Пример: `gcc -pthread`.

#### `MAINCC`

Команда компилятора C, используемая для сборки функции `main()` в таких программах, как `python`.

Переменная, устанавливаемая опцией [`--with-cxx-main`](https://python-all.ru/3.10/using/configure.html#cmdoption-0) сценария configure.

По умолчанию: `$(CC)`.

#### `CXX`

Команда компилятора C++.

Используется, если указана опция [`--with-cxx-main`](https://python-all.ru/3.10/using/configure.html#cmdoption-0).

Пример: `g++ -pthread`.

#### `CFLAGS`

Флаги компилятора C.

#### `CFLAGS_NODIST`

[`CFLAGS_NODIST`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS_NODIST) используется для сборки интерпретатора и расширений C из стандартной библиотеки. Используйте его, когда флаг компилятора *не* должен входить в состав [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS) distutils после установки Python ([bpo-21121](https://python-all.ru/3.10/using/configure.html)).

В частности, [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS) не должен содержать:

- флаг компилятора `-I` (для задания пути поиска включаемых файлов). Флаги `-I` обрабатываются слева направо, и любые флаги из [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS) будут иметь приоритет над `-I` флагами, предоставленными пользователем и пакетами.
- флаги усиления защиты, такие как `-Werror`, поскольку дистрибутивы не могут контролировать, соответствуют ли установленные пользователями пакеты таким повышенным стандартам.

Новое в версии 3.5.

#### `EXTRA_CFLAGS`

Дополнительные флаги компилятора C.

#### `CONFIGURE_CFLAGS`

Значение переменной [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS), передаваемое сценарию `./configure` .

Новое в версии 3.2.

#### `CONFIGURE_CFLAGS_NODIST`

Значение переменной [`CFLAGS_NODIST`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS_NODIST), передаваемое сценарию `./configure` .

Новое в версии 3.5.

#### `BASECFLAGS`

Базовые флаги компилятора.

#### `OPT`

Флаги оптимизации.

#### `CFLAGS_ALIASING`

Флаги строгого или нестрогого алиасинга, используемые для компиляции `Python/dtoa.c`.

Добавлено в версии 3.7.

#### `CCSHARED`

Флаги компилятора, используемые для сборки разделяемой библиотеки.

Например, `-fPIC` используется в Linux и BSD.

#### `CFLAGSFORSHARED`

Дополнительные флаги C, добавляемые для сборки объектных файлов интерпретатора.

По умолчанию: `$(CCSHARED)` при использовании [`--enable-shared`](https://python-all.ru/3.10/using/configure.html#cmdoption-enable-shared), иначе пустая строка.

#### `PY_CFLAGS`

По умолчанию: `$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)`.

#### `PY_CFLAGS_NODIST`

По умолчанию: `$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal`.

Новое в версии 3.5.

#### `PY_STDMODULE_CFLAGS`

Флаги C, используемые для сборки объектных файлов интерпретатора.

По умолчанию: `$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)`.

Добавлено в версии 3.7.

#### `PY_CORE_CFLAGS`

По умолчанию: `$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE`.

Новое в версии 3.2.

#### `PY_BUILTIN_MODULE_CFLAGS`

Флаги компилятора для сборки модуля расширения стандартной библиотеки как встроенного модуля, подобно модулю [`posix`](https://python-all.ru/3.10/library/posix.html#module-posix).

По умолчанию: `$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN`.

Новое в версии 3.8.

#### `PURIFY`

Команда Purify. Purify – программа для отладки памяти.

По умолчанию: пустая строка (не используется).

### 3.3.3. Флаги компоновщика

#### `LINKCC`

Команда компоновщика, используемая для сборки программ, таких как `python` и `_testembed`.

По умолчанию: `$(PURIFY) $(MAINCC)`.

#### `CONFIGURE_LDFLAGS`

Значение переменной [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS), передаваемое сценарию `./configure`.

Избегайте присваивания [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS), [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) и т.д., чтобы пользователи могли использовать их в командной строке для добавления к этим значениям, не перезаписывая предустановленные.

Новое в версии 3.2.

#### `LDFLAGS_NODIST`

[`LDFLAGS_NODIST`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS_NODIST) используется так же, как [`CFLAGS_NODIST`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS_NODIST). Его применяют, когда флаг компоновщика *не* должен быть частью distutils [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) после установки Python ([bpo-35257](https://python-all.ru/3.10/using/configure.html)).

В частности, [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) не должен содержать:

- флаг компилятора `-L` (для установки пути поиска библиотек). Флаги `-L` обрабатываются слева направо, и любые флаги в [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) будут иметь приоритет над флагами `-L`, предоставленными пользователем или пакетом.

#### `CONFIGURE_LDFLAGS_NODIST`

Значение переменной [`LDFLAGS_NODIST`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS_NODIST), передаваемое сценарию `./configure` .

Новое в версии 3.8.

#### `LDFLAGS`

Флаги компоновщика, например `-L<lib dir>`, если библиотеки находятся в нестандартном каталоге `<lib dir>`.

И [`CPPFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CPPFLAGS), и [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) должны содержать значение из оболочки, чтобы setup.py мог собирать модули расширения, используя каталоги, указанные в переменных окружения.

#### `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)`.

Новое в версии 3.8.

#### `PY_CORE_LDFLAGS`

Флаги компоновщика, используемые для сборки объектных файлов интерпретатора.

Новое в версии 3.8.
