Spec-Zone.ru › Python 3.12

Настройка Python

3.1. Требования к сборке

Для сборки CPython требуются следующие компоненты:

  • Компилятор C11. Дополнительные возможности C11 не требуются.
  • Поддержка чисел с плавающей точкой IEEE 754 и значения Not-a-Number (NaN) с плавающей точкой.
  • Поддержка потоков.
  • OpenSSL 1.1.1 или новее для модулей ssl и hashlib.
  • В Windows требуется Microsoft Visual Studio 2017 или новее.

Изменено в версии 3.5: В Windows требуется Visual Studio 2015 или новее.

Изменено в версии 3.6: Теперь требуются некоторые возможности C99, например функции <stdint.h> и static inline.

Изменено в версии 3.7: Теперь требуются поддержка потоков и OpenSSL 1.0.2.

Изменено в версии 3.10: Теперь требуется OpenSSL 1.1.1.

Изменено в версии 3.11: Теперь требуются компилятор C11, IEEE 754 и поддержка NaN. В Windows требуется Visual Studio 2017 или новее.

См. также PEP 7 «Руководство по стилю кода на C» и PEP 11 «Поддержка платформ CPython».

3.2. Сгенерированные файлы

Чтобы уменьшить число зависимостей сборки, исходный код Python включает несколько сгенерированных файлов. Команды для повторной генерации всех сгенерированных файлов:

make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure

В файле Makefile.pre.in описаны сгенерированные файлы, их входные данные и инструменты, используемые для их повторной генерации. Ищите цели make regen-*.

3.2.1. Скрипт configure

Команда make regen-configure повторно генерирует файл aclocal.m4 и скрипт configure с помощью shell-скрипта Tools/build/regen-configure.sh, который использует контейнер Ubuntu, чтобы обеспечить использование тех же версий инструментов и воспроизводимость результата.

Контейнер необязателен, следующую команду можно выполнить локально:

autoreconf -ivf -Werror

Сгенерированные файлы могут отличаться в зависимости от точных версий autoconf-archive, aclocal и pkg-config.

3.3. Параметры конфигурации

Список всех параметров скрипта ./configure:

./configure --help

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

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

--enable-loadable-sqlite-extensions

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

См. метод sqlite3.Connection.enable_load_extension() модуля sqlite3.

Добавлено в версии 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.

По умолчанию используется суффикс .exe в Windows и macOS (исполняемый файл python.exe), .js в Emscripten node, .html в браузере Emscripten, .wasm в WASI и пустая строка на других платформах (исполняемый файл 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.

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

--without-decimal-contextvar

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

См. decimal.HAVE_CONTEXTVAR и модуль contextvars.

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

--with-dbmliborder=<list of backend names>

Переопределить порядок проверки серверных частей БД для модуля dbm

Допустимое значение — строка, разделённая двоеточиями (:), с именами серверных частей:

  • ndbm;
  • gdbm;
  • bdb.
--without-c-locale-coercion

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

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

См. PYTHONCOERCECLOCALE и PEP 538.

--without-freelists

Отключить все списки свободных объектов, кроме синглтона пустого кортежа.

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

--with-platlibdir=DIRNAME

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

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

См. sys.platlibdir.

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

--with-wheel-pkg-dir=PATH

Каталог пакетов wheel, используемый модулем ensurepip (по умолчанию отсутствует).

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

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

--with-pkg-config=[check|yes|no]

Должна ли configure использовать pkg-config для обнаружения зависимостей сборки.

  • check (по умолчанию): pkg-config необязателен
  • yes: pkg-config обязателен
  • no: configure не использует pkg-config, даже если он доступен

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

--enable-pystats

Включить сбор внутренней статистики.

Статистика будет записана в произвольный (вероятно, уникальный) файл в /tmp/py_stats/ или в C:\temp\py_stats\ в Windows. Если этот каталог не существует, результаты будут выведены в stdout.

Используйте Tools/scripts/summarize_stats.py для чтения статистики.

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

3.3.2. Параметры WebAssembly

--with-emscripten-target=[browser|node]

Задать вариант сборки для wasm32-emscripten.

  • browser (по умолчанию): предварительно загрузить минимальную стандартную библиотеку, MEMFS по умолчанию.
  • node: поддержка NODERAWFS и pthreads.

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

--enable-wasm-dynamic-linking

Включить поддержку динамической компоновки для WASM.

Динамическая компоновка позволяет использовать dlopen. Размер исполняемого файла увеличивается из-за ограниченных возможностей удаления неиспользуемого кода и дополнительных функций.

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

--enable-wasm-pthreads

Включить поддержку pthreads для WASM.

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

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

--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 (по умолчанию собираются и устанавливаются).

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

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

Выбрать команду ensurepip, запускаемую при установке Python:

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

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

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

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

--enable-optimizations

Включить оптимизацию с управляемым профилем (PGO) с помощью PROFILE_TASK (по умолчанию отключена).

Для PGO компилятору C Clang требуется программа llvm-profdata. В macOS она также требуется GCC: в macOS GCC — это просто псевдоним Clang.

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

Примечание

Во время сборки могут появиться предупреждения компилятора о недоступности данных профиля для некоторых исходных файлов. Эти предупреждения безвредны, поскольку при сборе данных профиля выполняется только часть кода. Чтобы отключить эти предупреждения в Clang, вручную подавите их, добавив -Wno-profile-instr-unprofiled в CFLAGS.

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

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

PROFILE_TASK

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

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

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

--with-lto=[full|thin|no|yes]

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

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

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

Добавлено в версии 3.11: Чтобы использовать функцию ThinLTO, применяйте --with-lto=thin в Clang.

Изменено в версии 3.12: В Clang ThinLTO используется как политика оптимизации по умолчанию, если компилятор принимает этот флаг.

--enable-bolt

Включить использование бинарного оптимизатора BOLT, работающего после компоновки (по умолчанию отключено).

BOLT входит в проект LLVM, но не всегда включён в его бинарные дистрибутивы. Для этого флага требуется наличие llvm-bolt и merge-fdata.

BOLT — пока ещё довольно новый проект, поэтому на данный момент этот флаг следует считать экспериментальным. Поскольку инструмент работает с машинным кодом, его успех зависит от сочетания среды сборки, других аргументов configure для оптимизации и архитектуры ЦП; поддерживаются не все сочетания. Известно, что версии BOLT до LLVM 16 в некоторых случаях аварийно завершают работу. Настоятельно рекомендуется использовать для оптимизации BOLT LLVM 16 или новее.

Переменные configure BOLT_INSTRUMENT_FLAGS и BOLT_APPLY_FLAGS можно задать, чтобы переопределить набор аргументов по умолчанию для llvm-bolt, используемых соответственно для инструментирования и применения данных BOLT к бинарным файлам.

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

--with-computed-gotos

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

--without-pymalloc

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

См. также переменную окружения PYTHONMALLOC.

--without-doc-strings

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

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

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

--enable-profiling

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

--with-strict-overflow

Добавить -fstrict-overflow к флагам компилятора C (по умолчанию вместо этого добавляется -fno-strict-overflow).

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

Отладочная сборка — это сборка Python с параметром configure --with-pydebug.

Последствия отладочной сборки:

  • По умолчанию выводятся все предупреждения: список фильтров предупреждений по умолчанию в модуле warnings пуст.
  • Добавить d в sys.abiflags.
  • Добавить функцию sys.gettotalrefcount().
  • Добавить параметр командной строки -X showrefcount.
  • Добавить параметр командной строки -d и переменную окружения PYTHONDEBUG для отладки анализатора.
  • Добавить поддержку переменной __lltrace__: включить низкоуровневую трассировку в цикле интерпретации байт-кода, если переменная задана.
  • Установить отладочные перехватчики распределителей памяти для обнаружения переполнения буфера и других ошибок памяти.
  • Определить макросы Py_DEBUG и Py_REF_DEBUG.
  • Добавить проверки во время выполнения: код, заключённый между #ifdef Py_DEBUG и #endif. Включить утверждения assert(...) и _PyObject_ASSERT(...): не задавать макрос NDEBUG (см. также параметр configure --with-assertions). Основные проверки во время выполнения:

    • Добавить проверки корректности аргументов функций.
    • Объекты Unicode и int создаются с заполненной шаблоном памятью для обнаружения использования неинициализированных объектов.
    • Проверять, что функции, которые могут очистить или заменить текущее исключение, не вызываются при поднятом исключении.
    • Проверять, что функции освобождения памяти не изменяют текущее исключение.
    • Сборщик мусора (функция gc.collect()) выполняет базовые проверки согласованности объектов.
    • Макрос Py_SAFE_DOWNCAST() проверяет целочисленное переполнение и недополнение при преобразовании из широких типов в узкие.

См. также Режим разработки Python и параметр configure --with-trace-refs.

Изменено в версии 3.8: Релизные и отладочные сборки теперь совместимы на уровне ABI: определение макроса Py_DEBUG больше не подразумевает определение макроса Py_TRACE_REFS (см. параметр --with-trace-refs), который является единственным источником несовместимости ABI.

3.3.6. Параметры отладки

--with-pydebug

Собрать Python в режиме отладки: определить макрос Py_DEBUG (по умолчанию отключено).

--with-trace-refs

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

Последствия:

  • Определить макрос Py_TRACE_REFS.
  • Добавить функцию sys.getobjects().
  • Добавить переменную окружения PYTHONDUMPREFS.

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

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

--with-assertions

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

Если параметр задан, макрос NDEBUG не определяется в переменной компилятора OPT.

См. также параметр --with-pydebug (отладочная сборка), который также включает утверждения.

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

--with-valgrind

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

--with-dtrace

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

См. Инструментирование CPython с помощью DTrace и SystemTap.

Добавлено в версии 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.3.7. Параметры компоновщика

--enable-shared

Включить сборку общей библиотеки Python: libpython (по умолчанию отключено).

--without-static-libpython

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

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

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

--with-libs='lib1 ...'

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

--with-system-expat

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

--with-system-libmpdec

Собрать модуль расширения _decimal с установленной библиотекой mpdec; см. модуль decimal (по умолчанию отключено).

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

--with-readline=editline

Использовать библиотеку editline в качестве серверной части модуля readline.

Определить макрос WITH_EDITLINE.

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

--without-readline

Не собирать модуль readline (по умолчанию собирается).

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

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

--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 и pkg-config;
  • DIR: задать явное значение rpath.

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

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

--with-hash-algorithm=[fnv|siphash13|siphash24]

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

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

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

Добавлено в версии 3.11: siphash13 добавлен и стал новым значением по умолчанию.

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

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

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

3.3.10. Параметры macOS

См. Mac/README.rst.

--enable-universalsdk
--enable-universalsdk=SDKDIR

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

--enable-framework
--enable-framework=INSTALLDIR

Создать Python.framework вместо традиционной установки Unix. Необязательный параметр 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).

Обратите внимание, что значения этого параметра конфигурации не совпадают с идентификаторами, используемыми для универсальных wheel-пакетов на macOS. Подробности см. в руководстве пользователя по упаковке Python в разделе тегов совместимости платформ для упаковки, используемых в macOS

--with-framework-name=FRAMEWORK

Указать имя фреймворка Python; параметр применим только в macOS и только при включённом --enable-framework (по умолчанию: Python).

3.3.11. Параметры кросс-компиляции

Кросс-компиляция, также называемая кросс-сборкой, позволяет собирать Python для другой архитектуры ЦП или платформы. Для кросс-компиляции необходим интерпретатор Python для платформы сборки. Версия Python для сборки должна совпадать с версией кросс-компилируемого Python для целевой платформы.

--build=BUILD

настроить сборку для BUILD; обычно значение определяется программой config.guess.

--host=HOST

выполнить кросс-компиляцию программ для запуска на HOST (целевая платформа)

--with-build-python=path/to/python

путь к исполняемому файлу python для сборки при кросс-компиляции

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

CONFIG_SITE=file

Переменная окружения, указывающая на файл с переопределениями configure.

Пример файла config.site:

# config.site-aarch64
ac_cv_buggy_getaddrinfo=no
ac_cv_file__dev_ptmx=yes
ac_cv_file__dev_ptc=no

Пример кросс-компиляции:

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: расширения C, собираемые Makefile с помощью shell-скрипта Module/makesetup;

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

  • Файлы C (.c) собираются в объектные файлы (.o).
  • Из объектных файлов создаётся статическая библиотека libpython (.a).
  • python.o и статическая библиотека libpython компонуются в итоговую программу python.
  • Расширения C собираются с помощью Makefile (см. Modules/Setup).

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

  • make: собрать Python со стандартной библиотекой.
  • make platform:: собрать программу python, но не собирать модули расширения стандартной библиотеки.
  • make profile-opt: собрать Python с помощью оптимизации с профилированием (PGO). Чтобы сделать эту цель значением по умолчанию для команды make (make all или просто make), можно использовать параметр configure --enable-optimizations.
  • make buildbottest: собрать Python и запустить набор тестов Python, как это делают buildbot. Чтобы изменить время ожидания тестов (по умолчанию 1200 секунд — 20 минут), задайте переменную TESTTIMEOUT (в секундах).
  • make install: собрать и установить Python.
  • make regen-all: повторно создать (почти) все сгенерированные файлы; для остальных сгенерированных файлов необходимо отдельно выполнить make regen-stdlib-module-names и autoconf.
  • make clean: удалить собранные файлы.
  • make distclean: аналогично make clean, но дополнительно удаляет файлы, созданные сценарием configure.

3.4.4. Расширения C

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

>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> sys.__file__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'sys' has no attribute '__file__'

Другие расширения C собираются как динамические библиотеки, например модуль _asyncio. Они собираются с определённым макросом Py_BUILD_CORE_MODULE. Пример для Linux x86-64:

>>> import _asyncio
>>> _asyncio
<module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>
>>> _asyncio.__file__
'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'

Modules/Setup используется для создания целей Makefile для сборки расширений C. В начале файлов расширения C собираются как встроенные модули. Расширения, определённые после маркера *shared*, собираются как динамические библиотеки.

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

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

Если макрос Py_BUILD_CORE_BUILTIN ошибочно используется в расширении C, собираемом как разделяемая библиотека, его функция PyInit_xxx() не экспортируется, что приводит к ошибке ImportError при импорте.

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

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

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

CONFIGURE_CPPFLAGS

Значение переменной CPPFLAGS, передаваемое сценарию ./configure.

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

CPPFLAGS

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

И CPPFLAGS, и LDFLAGS должны содержать значение из оболочки, чтобы можно было собирать модули расширения с использованием каталогов, указанных в переменных окружения.

BASECPPFLAGS

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

PY_CPPFLAGS

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

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

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

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

CC

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

Пример: gcc -pthread.

CXX

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

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

CFLAGS

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

CFLAGS_NODIST

CFLAGS_NODIST используется при сборке интерпретатора и расширений стандартной библиотеки на C. Используйте эту переменную, если флаг компилятора не должен входить в CFLAGS после установки Python (gh-65320).

В частности, CFLAGS не должен содержать:

  • флаг компилятора -I (для задания пути поиска заголовочных файлов). Флаги -I обрабатываются слева направо, и любые флаги в CFLAGS будут иметь приоритет над флагами -I, заданными пользователем или пакетом.
  • флаги усиления защиты, такие как -Werror, поскольку дистрибутивы не могут контролировать, соответствуют ли установленным пользователями пакетам такие повышенные требования.

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

COMPILEALL_OPTS

Параметры, передаваемые командной строке compileall при создании файлов PYC в make install. По умолчанию: -j0.

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

EXTRA_CFLAGS

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

CONFIGURE_CFLAGS

Значение переменной CFLAGS, передаваемое сценарию ./configure.

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

CONFIGURE_CFLAGS_NODIST

Значение переменной CFLAGS_NODIST, передаваемое сценарию ./configure.

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

BASECFLAGS

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

OPT

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

CFLAGS_ALIASING

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

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

CCSHARED

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

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

CFLAGSFORSHARED

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

По умолчанию: $(CCSHARED), если используется --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.

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

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

PURIFY

Команда Purify. Purify — программа для отладки работы с памятью.

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

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

LINKCC

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

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

CONFIGURE_LDFLAGS

Значение переменной LDFLAGS, передаваемое сценарию ./configure.

Не присваивайте значения переменным CFLAGS, LDFLAGS и т. д., чтобы пользователи могли указывать их в командной строке для добавления значений, не затирая предустановленные значения.

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

LDFLAGS_NODIST

LDFLAGS_NODIST используется так же, как CFLAGS_NODIST. Используйте эту переменную, если флаг компоновщика не должен входить в LDFLAGS после установки Python (gh-65320).

В частности, LDFLAGS не должен содержать:

  • флаг компилятора -L (для задания пути поиска библиотек). Флаги -L обрабатываются слева направо, и любые флаги в LDFLAGS будут иметь приоритет над флагами -L, заданными пользователем или пакетом.
CONFIGURE_LDFLAGS_NODIST

Значение переменной LDFLAGS_NODIST, передаваемое сценарию ./configure.

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

LDFLAGS

Флаги компоновщика, например -Llib_dir, если библиотеки находятся в нестандартном каталоге lib_dir.

И CPPFLAGS, и 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).

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

PY_CORE_LDFLAGS

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

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

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/using/configure.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API