Настройка 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 с помощью скрипта оболочки 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.
-
--with-suffix=SUFFIX -
Установить суффикс исполняемого файла Python в SUFFIX.
По умолчанию суффикс равен
.exeв Windows и macOS (python.exeисполняемый файл),.jsв Emscripten node,.htmlв Emscripten browser,.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 -
Директория с пакетами колес, используемых модулем
ensurepip(по умолчанию пусто).Некоторые политики упаковки дистрибутивов Linux рекомендуют не включать зависимости. Например, Fedora устанавливает пакеты колес в каталог
/usr/share/python-wheels/и не устанавливает пакетensurepip._bundled.Добавлена в версии 3.10.
-
--with-pkg-config=[check|yes|no] -
Использовать ли pkg-config для определения зависимостей сборки.
-
check(по умолчанию): pkg-config необязателен -
yes: pkg-config обязателен -
no: pkg-config не используется даже если он присутствует
Добавлена в версии 3.11.
-
-
--enable-pystats -
Включить сборку внутренней статистики.
Статистика будет сохранена в произвольном (вероятно, уникальном) файле в
/tmp/py_stats/, илиC:\temp\py_stats\в Windows. Если этот каталог не существует, результаты будут выведены в стандартный вывод.Используйте
Tools/scripts/summarize_stats.pyдля чтения статистики.Добавлена в версии 3.11.
3.3.2. Настройки WebAssembly
-
--with-emscripten-target=[browser|node] -
Установить вариант сборки для
wasm32-emscripten.-
browser(по умолчанию): предварительная загрузка минимальной стандартной библиотеки, по умолчанию MEMFS. -
node: поддержка NODERAWFS и pthread.
Добавлена в версии 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(выключено по умолчанию).Компилятор C Clang требует программу
llvm-profdataдля PGO. На macOS GCC также требует ее: GCC — это просто псевдоним для Clang на macOS.Также отключите семантическое вмешательство в libpython, если используется
--enable-sharedи GCC: добавьте-fno-semantic-interpositionк флагам компилятора и компоновщика.Примечание
Во время сборки вы можете столкнуться с предупреждениями компилятора о том, что данные профиля недоступны для некоторых исходных файлов. Эти предупреждения не вредны, так как только подмножество кода выполняется во время сбора данных профиля. Чтобы отключить эти предупреждения в Clang, вручную подавите их, добавив
-Wno-profile-instr-unprofiledкCFLAGS.Добавлена в версии 3.6.
Изменено в версии 3.10: Используйте
-fno-semantic-interpositionв GCC.
-
PROFILE_TASK -
Переменная среды, используемая в Makefile: аргументы командной строки Python для задачи генерации PGO.
По умолчанию:
-m test --pgo --timeout=$(TESTTIMEOUT).Добавлена в версии 3.8.
-
--with-lto=[full|thin|no|yes] -
Включить оптимизацию в момент компоновки (LTO) в любом билде (отключено по умолчанию).
Компилятор C Clang требует
llvm-arдля LTO (arна macOS), а также компоновщик, поддерживающий LTO (ld.goldилиlld).Добавлена в версии 3.6.
Добавлена в версии 3.11: Для использования ThinLTO, используйте
--with-lto=thinв Clang.Изменено в версии 3.12: Используется ThinLTO в качестве политики оптимизации по умолчанию в Clang, если компилятор принимает флаг.
-
--enable-bolt -
Включить использование BOLT пост-линковый оптимизатор бинарных файлов (выключено по умолчанию).
BOLT является частью проекта LLVM, но не всегда входит в их дистрибутивы. Этот флаг требует наличия
llvm-boltиmerge-fdata.BOLT — это относительно новый проект, поэтому этот флаг следует пока рассматривать как экспериментальный. Поскольку этот инструмент работает с машинным кодом, его успех зависит от комбинации среды сборки + других параметров конфигурации оптимизации + архитектуры процессора, и не все комбинации поддерживаются. Известно, что версии BOLT до LLVM 16 могут вызывать сбои в некоторых сценариях. Рекомендуется использовать LLVM 16 или новее для оптимизации BOLT.
Переменные
BOLT_INSTRUMENT_FLAGSиBOLT_APPLY_FLAGSconfigure могут быть определены для переопределения набора аргументов по умолчанию для 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 создается с параметром конфигурации --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не устанавливается (см. также параметр конфигурации--with-assertions). Основные проверки во время выполнения:- Добавляются проверки корректности аргументов функций.
- Объекты Unicode и int создаются с заполнением памяти образцом для обнаружения использования неинициализированных объектов.
- Обеспечивается, что функции, которые могут очистить или заменить текущее исключение, не вызываются при возникшем исключении.
- Проверяется, что функции освобождения не изменяют текущее исключение.
- Сборщик мусора (
gc.collect()функция) выполняет некоторые базовые проверки согласованности объектов. - Макрос
Py_SAFE_DOWNCAST()проверяет целочисленное переполнение и подпотолок при преобразовании типов с широкого на узкий.
См. также Режим разработки Python и параметр конфигурации --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. Параметры компоновщика
-
Включить создание общего библиотечного файла 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 без изменений; - СТРОКА: использовать настраиваемую строку
См. модуль
ssl.Добавлен в версии 3.7.
Изменено в версии 3.10: Настройки
pythonи СТРОКА также устанавливают 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; -
32-bit; -
64-bit; -
3-way; -
intel; -
intel-32; -
intel-64; -
all.
-
-
--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 -
Переменная среды, указывающая на файл с переопределениями конфигурации.
Пример файла 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 с использованием скрипта оболочки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 с использованием Profile Guided Optimization (PGO). Можно использовать параметр конфигурации--enable-optimizations, чтобы сделать это целевым параметром командыmake(make allили простоmake). -
make buildbottest: Сборка Python и запуск набора тестов Python, аналогично тому, как тесты Python выполняются в buildbots. Для изменения таймаута тестов (по умолчанию 1200 секунд: 20 минут) можно установить переменнуюTESTTIMEOUT(в секундах). -
make install: Сборка и установка Python. -
make regen-all: Перегенерация (почти) всех сгенерированных файлов;make regen-stdlib-module-namesиautoconfнеобходимо выполнить отдельно для оставшихся сгенерированных файлов. -
make clean: Удаление скомпилированных файлов. -
make distclean: То же, чтоmake clean, но также удаляются файлы, созданные скриптом конфигурации.
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++, например,
-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 stdlib. Используйте его, когда флаг компилятора не должен быть частью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 -
Флаги компилятора, используемые для построения разделяемой библиотеки.
Например,
-fPICиспользуется в Linux и на BSD.
-
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 — это программа отладки памяти.
По умолчанию: пустая строка (не используется).
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