configure.md
1> **Источник:** https://python-all.ru/3.10/using/configure.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 3. Настройка Python89## 3.1. Параметры configure1011Выведите список всех параметров сценария `./configure` с помощью:1213```python14./configure --help15```1617См. также `Misc/SpecialBuilds.txt` в дистрибутиве исходного кода Python.1819### 3.1.1. Общие параметры2021#### `--enable-loadable-sqlite-extensions`2223Поддержка загружаемых расширений в модуле расширения `_sqlite` (по умолчанию – нет).2425См. метод [`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).2627Новое в версии 3.6.2829#### `--disable-ipv6`3031Отключить поддержку IPv6 (включена по умолчанию, если поддерживается), см. модуль [`socket`](https://python-all.ru/3.10/library/socket.html#module-socket).3233#### `--enable-big-digits=[15|30]`3435Определить размер в битах цифр Python [`int`](https://python-all.ru/3.10/library/functions.html#int): 15 или 30 бит.3637По умолчанию количество битов выбирается в зависимости от `sizeof(void*)`: 30 бит, если размер `void*` составляет 64 бита или больше, иначе 15 бит.3839Определить `PYLONG_BITS_IN_DIGIT` как `15` или `30`.4041См. [`sys.int_info.bits_per_digit`](https://python-all.ru/3.10/library/sys.html#sys.int_info).4243#### `--with-cxx-main`4445#### `--with-cxx-main=COMPILER`4647Скомпилировать функцию `main()` Python и слинковать исполняемый файл Python с C++ компилятором: `$CXX`, или *COMPILER*, если указан.4849#### `--with-suffix=SUFFIX`5051Установить суффикс исполняемого файла Python равным *SUFFIX*.5253Суффикс по умолчанию – `.exe` в Windows и macOS (исполняемый файл `python.exe`), и пустая строка на других платформах (исполняемый файл `python`).5455#### `--with-tzpath=<list of absolute paths separated by pathsep>`5657Выбрать путь поиска часового пояса по умолчанию для [`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).5859По умолчанию: `/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo`.6061См. разделитель путей [`os.pathsep`](https://python-all.ru/3.10/library/os.html#os.pathsep).6263Новое в версии 3.9.6465#### `--without-decimal-contextvar`6667Сборка модуля расширения `_decimal` с контекстом, локальным для потока, а не с контекстом, локальным для корутины (по умолчанию). См. модуль [`decimal`](https://python-all.ru/3.10/library/decimal.html#module-decimal).6869См. [`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).7071Новое в версии 3.9.7273#### `--with-dbmliborder=db1:db2:...`7475Переопределяет порядок проверки бэкендов БД для модуля [`dbm`](https://python-all.ru/3.10/library/dbm.html#module-dbm).7677Допустимое значение – строка с именами бэкендов, разделённая двоеточиями (`:`):7879- `ndbm`;80- `gdbm`;81- `bdb`.8283#### `--without-c-locale-coercion`8485Отключает приведение локали C к локали на основе UTF-8 (включено по умолчанию).8687Не определять макрос `PY_COERCE_C_LOCALE`.8889См. [`PYTHONCOERCECLOCALE`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONCOERCECLOCALE) и [**PEP 538**](https://python-all.ru/3.10/using/configure.html).9091#### `--with-platlibdir=DIRNAME`9293Имя каталога библиотек Python (по умолчанию `lib`).9495Fedora и SuSE используют `lib64` на 64-разрядных платформах.9697См. [`sys.platlibdir`](https://python-all.ru/3.10/library/sys.html#sys.platlibdir).9899Новое в версии 3.9.100101#### `--with-wheel-pkg-dir=PATH`102103Каталог пакетов wheel, используемых модулем [`ensurepip`](https://python-all.ru/3.10/library/ensurepip.html#module-ensurepip) (по умолчанию отсутствует).104105Некоторые политики упаковки дистрибутивов Linux рекомендуют не включать зависимости. Например, Fedora устанавливает пакеты wheel в каталог `/usr/share/python-wheels/` и не устанавливает пакет `ensurepip._bundled`.106107Новое в версии 3.10.108109### 3.1.2. Параметры установки110111#### `--prefix=PREFIX`112113Устанавливает архитектурно-независимые файлы в PREFIX. В Unix по умолчанию используется `/usr/local`.114115Это значение можно получить во время выполнения с помощью [`sys.prefix`](https://python-all.ru/3.10/library/sys.html#sys.prefix).116117Например, можно использовать `--prefix="$HOME/.local/"` для установки Python в домашний каталог.118119#### `--exec-prefix=EPREFIX`120121Устанавливает архитектурно-зависимые файлы в EPREFIX, по умолчанию [`--prefix`](https://python-all.ru/3.10/using/configure.html#cmdoption-prefix).122123Это значение можно получить во время выполнения с помощью [`sys.exec_prefix`](https://python-all.ru/3.10/library/sys.html#sys.exec_prefix).124125#### `--disable-test-modules`126127Не собирать и не устанавливать тестовые модули, такие как пакет [`test`](https://python-all.ru/3.10/library/test.html#module-test) или модуль расширения `_testcapi` (собирается и устанавливается по умолчанию).128129Новое в версии 3.10.130131#### `--with-ensurepip=[upgrade|install|no]`132133Выбирает команду [`ensurepip`](https://python-all.ru/3.10/library/ensurepip.html#module-ensurepip), запускаемую при установке Python:134135- `upgrade` (по умолчанию): запустить команду `python -m ensurepip --altinstall --upgrade` .136- `install`: запустить команду `python -m ensurepip --altinstall`;137- `no`: не запускать ensurepip;138139Новое в версии 3.6.140141### 3.1.3. Параметры производительности142143Для достижения наилучшей производительности рекомендуется настраивать Python с использованием `--enable-optimizations --with-lto` (PGO + LTO).144145#### `--enable-optimizations`146147Включает профильную оптимизацию (PGO) с помощью [`PROFILE_TASK`](https://python-all.ru/3.10/using/configure.html#envvar-PROFILE_TASK) (по умолчанию отключено).148149Компилятору Clang требуется программа `llvm-profdata` для PGO. На macOS она также требуется GCC: GCC – это просто псевдоним Clang на macOS.150151Также отключает семантическое переопределение символов в libpython, если используются `--enable-shared` и GCC: добавьте `-fno-semantic-interposition` в флаги компилятора и компоновщика.152153Новое в версии 3.6.154155Изменено в версии 3.10: Используйте `-fno-semantic-interposition` в GCC.156157#### `PROFILE_TASK`158159Переменная окружения, используемая в Makefile: аргументы командной строки Python для задачи генерации PGO.160161По умолчанию: `-m test --pgo --timeout=$(TESTTIMEOUT)`.162163Новое в версии 3.8.164165#### `--with-lto`166167Включает оптимизацию во время компоновки (LTO) в любой сборке (по умолчанию отключено).168169Компилятору Clang требуется `llvm-ar` для LTO (`ar` в macOS), а также компоновщик, поддерживающий LTO (`ld.gold` или `lld`).170171Новое в версии 3.6.172173#### `--with-computed-gotos`174175Включает вычисляемые переходы в цикле вычислений (включено по умолчанию на поддерживаемых компиляторах).176177#### `--without-pymalloc`178179Отключает специализированный распределитель памяти Python [pymalloc](https://python-all.ru/3.10/c-api/memory.html#pymalloc) (включён по умолчанию).180181См. также переменную окружения [`PYTHONMALLOC`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONMALLOC).182183#### `--without-doc-strings`184185Отключает статические строки документации для уменьшения потребления памяти (включено по умолчанию). Строки документации, определённые в Python, не затрагиваются.186187Не определять макрос `WITH_DOC_STRINGS`.188189См. макрос `PyDoc_STRVAR()`.190191#### `--enable-profiling`192193Включает профилирование кода на уровне C с помощью `gprof` (отключено по умолчанию).194195### 3.1.4. Отладочная сборка Python196197Отладочная сборка – это Python, собранный с опцией конфигурации [`--with-pydebug`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-pydebug).198199Эффекты отладочной сборки:200201- Показывать все предупреждения по умолчанию: список фильтров предупреждений по умолчанию пуст в модуле [`warnings`](https://python-all.ru/3.10/library/warnings.html#module-warnings).202- Добавляет `d` в [`sys.abiflags`](https://python-all.ru/3.10/library/sys.html#sys.abiflags).203- Добавляет функцию `sys.gettotalrefcount()`.204- Добавляет опцию командной строки [`-X showrefcount`](https://python-all.ru/3.10/using/cmdline.html#cmdoption-X).205- Добавляет переменную окружения [`PYTHONTHREADDEBUG`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONTHREADDEBUG).206- Добавляет поддержку переменной `__ltrace__`: включение низкоуровневой трассировки в цикле выполнения байт-кода, если переменная определена.207- Устанавливает [отладочные привязки на распределители памяти](https://python-all.ru/3.10/c-api/memory.html#default-memory-allocators) для обнаружения переполнения буфера и других ошибок памяти.208- Определяет макросы `Py_DEBUG` и `Py_REF_DEBUG`.209- Добавить проверки времени выполнения: код, окружённый `#ifdef Py_DEBUG` и `#endif`. Включить утверждения `assert(...)` и `_PyObject_ASSERT(...)`: не определять макрос `NDEBUG` (см. также опцию конфигурации [`--with-assertions`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-assertions)). Основные проверки времени выполнения:210211 - Добавляет проверки корректности аргументов функций.212 - Объекты Unicode и int создаются с заполнением памяти шаблоном для обнаружения использования неинициализированных объектов.213 - Гарантирует, что функции, которые могут очистить или заменить текущее исключение, не вызываются при возникшем исключении.214 - Сборщик мусора (функция [`gc.collect()`](https://python-all.ru/3.10/library/gc.html#gc.collect)) выполняет базовые проверки корректности объектов.215 - Макрос `Py_SAFE_DOWNCAST()` проверяет целочисленное переполнение (underflow и overflow) при понижающем приведении от широких типов к узким.216217См. также [режим разработки 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).218219Изменено в версии 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.220221### 3.1.5. Отладочные опции222223#### `--with-pydebug`224225[Собрать Python в отладочном режиме](https://python-all.ru/3.10/using/configure.html#debug-build): определяет макрос `Py_DEBUG` (отключён по умолчанию).226227#### `--with-trace-refs`228229Включает отслеживание ссылок для целей отладки (отключено по умолчанию).230231Эффекты:232233- Определяет макрос `Py_TRACE_REFS`.234- Добавляет функцию `sys.getobjects()`.235- Добавляет переменную окружения [`PYTHONDUMPREFS`](https://python-all.ru/3.10/using/cmdline.html#envvar-PYTHONDUMPREFS).236237Эта сборка несовместима по ABI со сборкой для выпуска (сборкой по умолчанию) или отладочной сборкой (макросы `Py_DEBUG` и `Py_REF_DEBUG`).238239Новое в версии 3.8.240241#### `--with-assertions`242243Сборка с включёнными C-утверждениями (по умолчанию нет): `assert(...);` и `_PyObject_ASSERT(...);`.244245Если установлен, макрос `NDEBUG` не определяется в переменной компилятора [`OPT`](https://python-all.ru/3.10/using/configure.html#envvar-OPT).246247См. также опцию [`--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)), которая также включает утверждения.248249Новое в версии 3.6.250251#### `--with-valgrind`252253Включить поддержку Valgrind (по умолчанию нет).254255#### `--with-dtrace`256257Включить поддержку DTrace (по умолчанию нет).258259См. [Инструментирование CPython с помощью DTrace и SystemTap](https://python-all.ru/3.10/howto/instrumentation.html#instrumentation).260261Новое в версии 3.6.262263#### `--with-address-sanitizer`264265Включает детектор ошибок памяти AddressSanitizer, `asan` (по умолчанию нет).266267Новое в версии 3.6.268269#### `--with-memory-sanitizer`270271Включить детектор ошибок выделения памяти MemorySanitizer, `msan` (по умолчанию нет).272273Новое в версии 3.6.274275#### `--with-undefined-behavior-sanitizer`276277Включить детектор неопределённого поведения UndefinedBehaviorSanitizer, `ubsan` (по умолчанию нет).278279Новое в версии 3.6.280281### 3.1.6. Параметры компоновщика282283#### `--enable-shared`284285Включает сборку разделяемой библиотеки Python: `libpython` (по умолчанию выключено).286287#### `--without-static-libpython`288289Не собирать `libpythonMAJOR.MINOR.a` и не устанавливать `python.o` (собирается и устанавливается по умолчанию).290291Новое в версии 3.10.292293### 3.1.7. Параметры библиотек294295#### `--with-libs='lib1 ...'`296297Линковаться с дополнительными библиотеками (по умолчанию нет).298299#### `--with-system-expat`300301Собирать модуль `pyexpat`, используя установленную библиотеку `expat` (по умолчанию нет).302303#### `--with-system-ffi`304305Собрать модуль расширения `_ctypes`, используя установленную `ffi` библиотеку, см. модуль [`ctypes`](https://python-all.ru/3.10/library/ctypes.html#module-ctypes) (по умолчанию зависит от системы).306307#### `--with-system-libmpdec`308309Собрать модуль расширения `_decimal`, используя установленную библиотеку `mpdec`; см. модуль [`decimal`](https://python-all.ru/3.10/library/decimal.html#module-decimal) (по умолчанию нет).310311Новое в версии 3.3.312313#### `--with-readline=editline`314315Использовать библиотеку `editline` в качестве бэкенда модуля [`readline`](https://python-all.ru/3.10/library/readline.html#module-readline).316317Определяет макрос `WITH_EDITLINE`.318319Новое в версии 3.10.320321#### `--without-readline`322323Не собирать модуль [`readline`](https://python-all.ru/3.10/library/readline.html#module-readline) (собирается по умолчанию).324325Не определять макрос `HAVE_LIBREADLINE`.326327Новое в версии 3.10.328329#### `--with-tcltk-includes='-I...'`330331Переопределение поиска включаемых файлов Tcl и Tk.332333#### `--with-tcltk-libs='-L...'`334335Переопределение поиска библиотек Tcl и Tk.336337#### `--with-libm=STRING`338339Переопределить математическую библиотеку `libm` на *STRING* (по умолчанию зависит от системы).340341#### `--with-libc=STRING`342343Переопределить библиотеку C `libc` на *STRING* (по умолчанию зависит от системы).344345#### `--with-openssl=DIR`346347Корневой каталог OpenSSL.348349Добавлено в версии 3.7.350351#### `--with-openssl-rpath=[no|auto|DIR]`352353Задать каталог библиотек времени выполнения (rpath) для библиотек OpenSSL:354355- `no` (по умолчанию): не устанавливать rpath;356- `auto`: автоматически определять rpath из [`--with-openssl`](https://python-all.ru/3.10/using/configure.html#cmdoption-with-openssl) и `pkg-config`;357- *DIR*: указать явный rpath.358359Новое в версии 3.10.360361### 3.1.8. Параметры безопасности362363#### `--with-hash-algorithm=[fnv|siphash24]`364365Выберите алгоритм хеширования для использования в `Python/pyhash.c`:366367- `siphash24` (по умолчанию).368- `fnv`;369370Новое в версии 3.4.371372#### `--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2`373374Встроенные хеш-модули:375376- `md5`;377- `sha1`;378- `sha256`;379- `sha512`;380- `sha3` (с shake);381- `blake2`.382383Новое в версии 3.9.384385#### `--with-ssl-default-suites=[python|openssl|STRING]`386387Переопределить строку наборов шифров OpenSSL по умолчанию:388389- `python` (по умолчанию): использовать предпочтительный выбор Python;390- `openssl`: оставить настройки OpenSSL по умолчанию без изменений;391- *STRING*: использовать произвольную строку392393См. модуль [`ssl`](https://python-all.ru/3.10/library/ssl.html#module-ssl).394395Добавлено в версии 3.7.396397Изменено в версии 3.10: Настройки `python` и *STRING* также устанавливают TLS 1.2 в качестве минимальной версии протокола.398399### 3.1.9. Параметры macOS400401См. `Mac/README.rst`.402403#### `--enable-universalsdk`404405#### `--enable-universalsdk=SDKDIR`406407Создание универсальной сборки двоичного файла. *SDKDIR* указывает, какой macOS SDK следует использовать для сборки (по умолчанию нет).408409#### `--enable-framework`410411#### `--enable-framework=INSTALLDIR`412413Создаёт Python.framework вместо традиционной установки в Unix. Необязательный *INSTALLDIR* определяет путь установки (по умолчанию – нет).414415#### `--with-universal-archs=ARCH`416417Определяет тип универсального бинарного файла, который будет создан. Этот параметр работает, только если указан [`--enable-universalsdk`](https://python-all.ru/3.10/using/configure.html#cmdoption-1).418419Варианты:420421- `universal2`;422- `32-bit`;423- `64-bit`;424- `3-way`;425- `intel`;426- `intel-32`;427- `intel-64`;428- `all`.429430#### `--with-framework-name=FRAMEWORK`431432Задаёт имя для python framework в macOS. Работает только при указанном [`--enable-framework`](https://python-all.ru/3.10/using/configure.html#cmdoption-2) (по умолчанию: `Python`).433434## 3.2. Система сборки Python435436### 3.2.1. Основные файлы системы сборки437438- `configure.ac` =\> `configure`;439- `Makefile.pre.in` =\> `Makefile` (создаётся с помощью `configure`);440- `pyconfig.h` (создаётся с помощью `configure`);441- `Modules/Setup`: расширения на C, собираемые Makefile с помощью `Module/makesetup` shell-скрипта;442- `setup.py`: расширения C, собранные с использованием модуля [`distutils`](https://python-all.ru/3.10/library/distutils.html#module-distutils).443444### 3.2.2. Основные этапы сборки445446- C-файлы (`.c`) компилируются в объектные файлы (`.o`).447- Статическая библиотека `libpython` (`.a`) создаётся из объектных файлов.448- `python.o` и статическая библиотека `libpython` компонуются в итоговую программу `python`.449- Расширения C собираются Makefile (см. `Modules/Setup`) и `python setup.py build`.450451### 3.2.3. Основные цели Makefile452453- `make`: Собрать Python со стандартной библиотекой.454- `make platform:`: собрать программу `python`, но не собирать модули расширений стандартной библиотеки.455- `make profile-opt`: собрать Python с использованием профильной оптимизации (PGO). Чтобы сделать это целью по умолчанию команды `make` (`make all` или просто `make`), можно использовать опцию configure [`--enable-optimizations`](https://python-all.ru/3.10/using/configure.html#cmdoption-enable-optimizations).456- `make buildbottest`: собрать Python и запустить тестовый набор Python, так же как сборочные боты тестируют Python. Установите переменную `TESTTIMEOUT` (в секундах), чтобы изменить тайм-аут теста (по умолчанию 1200: 20 минут).457- `make install`: собрать и установить Python.458- `make regen-all`: перегенерировать (почти) все сгенерированные файлы; `make regen-stdlib-module-names` и `autoconf` должны быть запущены отдельно для оставшихся сгенерированных файлов.459- `make clean`: удалить собранные файлы.460- `make distclean`: то же, что `make clean`, но также удаляет файлы, созданные скриптом configure.461462### 3.2.4. Расширения C463464Некоторые расширения C собираются как встроенные модули, например модуль `sys`. Они собираются с определённым макросом `Py_BUILD_CORE_BUILTIN`. Встроенные модули не имеют атрибута `__file__`:465466```python467>>> import sys468>>> sys469<module 'sys' (built-in)>470>>> sys.__file__471Traceback (most recent call last):472 File "<stdin>", line 1, in <module>473AttributeError: module 'sys' has no attribute '__file__'474```475476Остальные расширения на C собираются как динамические библиотеки, как модуль `_asyncio`. Они собираются с определённым макросом `Py_BUILD_CORE_MODULE`. Пример на Linux x86-64:477478```python479>>> import _asyncio480>>> _asyncio481<module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>482>>> _asyncio.__file__483'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'484```485486`Modules/Setup` используется для генерации целей Makefile для сборки расширений C. В начале файлов расширения C собираются как встроенные модули. Расширения, определённые после маркера `*shared*`, собираются как динамические библиотеки.487488Скрипт `setup.py` собирает расширения C только как разделяемые библиотеки с помощью модуля [`distutils`](https://python-all.ru/3.10/library/distutils.html#module-distutils).489490Макросы `PyAPI_FUNC()`, `PyAPI_API()` и `PyMODINIT_FUNC()` из `Include/pyport.h` определяются по-разному в зависимости от того, определён ли макрос `Py_BUILD_CORE_MODULE`:491492- Используйте `Py_EXPORTED_SYMBOL`, если `Py_BUILD_CORE_MODULE` определён.493- В противном случае используйте `Py_IMPORTED_SYMBOL`.494495Если макрос `Py_BUILD_CORE_BUILTIN` по ошибке используется для расширения C, собранного как разделяемая библиотека, его функция `PyInit_xxx()` не экспортируется, что вызывает [`ImportError`](https://python-all.ru/3.10/library/exceptions.html#ImportError) при импорте.496497## 3.3. Флаги компилятора и компоновщика498499Параметры, задаваемые сценарием `./configure` и переменными окружения, и используемые `Makefile`.500501### 3.3.1. Флаги препроцессора502503#### `CONFIGURE_CPPFLAGS`504505Значение переменной [`CPPFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CPPFLAGS), передаваемое сценарию `./configure`.506507Новое в версии 3.6.508509#### `CPPFLAGS`510511Флаги препроцессора (Objective) C/C++, например `-I<include dir>`, если заголовочные файлы находятся в нестандартном каталоге `<include dir>`.512513И [`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 мог собирать модули расширения, используя каталоги, указанные в переменных окружения.514515#### `BASECPPFLAGS`516517Новое в версии 3.4.518519#### `PY_CPPFLAGS`520521Дополнительные флаги препроцессора, добавляемые при сборке объектных файлов интерпретатора.522523По умолчанию: `$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)`.524525Новое в версии 3.2.526527### 3.3.2. Флаги компилятора528529#### `CC`530531Команда компилятора C.532533Пример: `gcc -pthread`.534535#### `MAINCC`536537Команда компилятора C, используемая для сборки функции `main()` в таких программах, как `python`.538539Переменная, устанавливаемая опцией [`--with-cxx-main`](https://python-all.ru/3.10/using/configure.html#cmdoption-0) сценария configure.540541По умолчанию: `$(CC)`.542543#### `CXX`544545Команда компилятора C++.546547Используется, если указана опция [`--with-cxx-main`](https://python-all.ru/3.10/using/configure.html#cmdoption-0).548549Пример: `g++ -pthread`.550551#### `CFLAGS`552553Флаги компилятора C.554555#### `CFLAGS_NODIST`556557[`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)).558559В частности, [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS) не должен содержать:560561- флаг компилятора `-I` (для задания пути поиска включаемых файлов). Флаги `-I` обрабатываются слева направо, и любые флаги из [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS) будут иметь приоритет над `-I` флагами, предоставленными пользователем и пакетами.562- флаги усиления защиты, такие как `-Werror`, поскольку дистрибутивы не могут контролировать, соответствуют ли установленные пользователями пакеты таким повышенным стандартам.563564Новое в версии 3.5.565566#### `EXTRA_CFLAGS`567568Дополнительные флаги компилятора C.569570#### `CONFIGURE_CFLAGS`571572Значение переменной [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS), передаваемое сценарию `./configure` .573574Новое в версии 3.2.575576#### `CONFIGURE_CFLAGS_NODIST`577578Значение переменной [`CFLAGS_NODIST`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS_NODIST), передаваемое сценарию `./configure` .579580Новое в версии 3.5.581582#### `BASECFLAGS`583584Базовые флаги компилятора.585586#### `OPT`587588Флаги оптимизации.589590#### `CFLAGS_ALIASING`591592Флаги строгого или нестрогого алиасинга, используемые для компиляции `Python/dtoa.c`.593594Добавлено в версии 3.7.595596#### `CCSHARED`597598Флаги компилятора, используемые для сборки разделяемой библиотеки.599600Например, `-fPIC` используется в Linux и BSD.601602#### `CFLAGSFORSHARED`603604Дополнительные флаги C, добавляемые для сборки объектных файлов интерпретатора.605606По умолчанию: `$(CCSHARED)` при использовании [`--enable-shared`](https://python-all.ru/3.10/using/configure.html#cmdoption-enable-shared), иначе пустая строка.607608#### `PY_CFLAGS`609610По умолчанию: `$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)`.611612#### `PY_CFLAGS_NODIST`613614По умолчанию: `$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal`.615616Новое в версии 3.5.617618#### `PY_STDMODULE_CFLAGS`619620Флаги C, используемые для сборки объектных файлов интерпретатора.621622По умолчанию: `$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)`.623624Добавлено в версии 3.7.625626#### `PY_CORE_CFLAGS`627628По умолчанию: `$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE`.629630Новое в версии 3.2.631632#### `PY_BUILTIN_MODULE_CFLAGS`633634Флаги компилятора для сборки модуля расширения стандартной библиотеки как встроенного модуля, подобно модулю [`posix`](https://python-all.ru/3.10/library/posix.html#module-posix).635636По умолчанию: `$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN`.637638Новое в версии 3.8.639640#### `PURIFY`641642Команда Purify. Purify – программа для отладки памяти.643644По умолчанию: пустая строка (не используется).645646### 3.3.3. Флаги компоновщика647648#### `LINKCC`649650Команда компоновщика, используемая для сборки программ, таких как `python` и `_testembed`.651652По умолчанию: `$(PURIFY) $(MAINCC)`.653654#### `CONFIGURE_LDFLAGS`655656Значение переменной [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS), передаваемое сценарию `./configure`.657658Избегайте присваивания [`CFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-CFLAGS), [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) и т.д., чтобы пользователи могли использовать их в командной строке для добавления к этим значениям, не перезаписывая предустановленные.659660Новое в версии 3.2.661662#### `LDFLAGS_NODIST`663664[`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)).665666В частности, [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) не должен содержать:667668- флаг компилятора `-L` (для установки пути поиска библиотек). Флаги `-L` обрабатываются слева направо, и любые флаги в [`LDFLAGS`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS) будут иметь приоритет над флагами `-L`, предоставленными пользователем или пакетом.669670#### `CONFIGURE_LDFLAGS_NODIST`671672Значение переменной [`LDFLAGS_NODIST`](https://python-all.ru/3.10/using/configure.html#envvar-LDFLAGS_NODIST), передаваемое сценарию `./configure` .673674Новое в версии 3.8.675676#### `LDFLAGS`677678Флаги компоновщика, например `-L<lib dir>`, если библиотеки находятся в нестандартном каталоге `<lib dir>`.679680И [`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 мог собирать модули расширения, используя каталоги, указанные в переменных окружения.681682#### `LIBS`683684Флаги компоновщика для передачи библиотек компоновщику при компоновке исполняемого файла Python.685686Пример: `-lrt`.687688#### `LDSHARED`689690Команда для сборки разделяемой библиотеки.691692По умолчанию: `@LDSHARED@ $(PY_LDFLAGS)`.693694#### `BLDSHARED`695696Команда для сборки разделяемой библиотеки `libpython`.697698По умолчанию: `@BLDSHARED@ $(PY_CORE_LDFLAGS)`.699700#### `PY_LDFLAGS`701702По умолчанию: `$(CONFIGURE_LDFLAGS) $(LDFLAGS)`.703704#### `PY_LDFLAGS_NODIST`705706По умолчанию: `$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)`.707708Новое в версии 3.8.709710#### `PY_CORE_LDFLAGS`711712Флаги компоновщика, используемые для сборки объектных файлов интерпретатора.713714Новое в версии 3.8.715