3. Настройка Python¶
3.1. Настройка параметров¶
Перечислите все ./configure
параметры скрипта, используя:
./configure --help
Смотрите также Misc/SpecialBuilds.txt
в исходном коде Python.
3.1.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-cxx-main¶
- --with-cxx-main=COMPILER¶
Скомпилируйте функцию Python
main()
и свяжите исполняемый файл Python с компилятором C++:$CXX
или COMPILER, если указано.
- --with-suffix=SUFFIX¶
Установите суффикс исполняемого файла Python равным SUFFIX.
Суффикс по умолчанию равен
.exe
в Windows и Mac OS (python.exe
исполняемый файл),.js
в узле Emscripten,.html
в браузере Emscripten,.wasm
в WASI и пустая строка на других платформах (python
исполняемый файл).Изменено в версии 3.11: Суффиксом по умолчанию на платформе WASM является один из
.js
,.html
или.wasm
.
- --with-tzpath=<list of absolute paths separated by pathsep>¶
Выберите путь поиска часового пояса по умолчанию для
zoneinfo.TZPATH
. Смотрите раздел Compile-time configuration модуля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.
- --with-platlibdir=DIRNAME¶
Имя каталога библиотеки Python (по умолчанию
lib
).Fedora и SuSE используют
lib64
на 64-разрядных платформах.Смотрите
sys.platlibdir
.Добавлено в версии 3.9.
- --with-wheel-pkg-dir=PATH¶
Каталог пакетов колес, используемых модулем
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.Используйте
Tools/scripts/summarize_stats.py
для просмотра статистики.Добавлено в версии 3.11.
3.1.2. Параметры веб-сборки¶
- --with-emscripten-target=[browser|node]¶
Установите для параметра build значение
wasm32-emscripten
.browser
(по умолчанию): минимальная предварительная загрузка stdlib, MEMFS по умолчанию.node
: Поддержка NODERAWFS и pthread.
Добавлено в версии 3.11.
- --enable-wasm-dynamic-linking¶
Включите поддержку динамической компоновки для WASM.
Динамическая компоновка позволяет использовать
dlopen
. Размер исполняемого файла увеличивается из-за ограниченного устранения мертвого кода и дополнительных функций.Добавлено в версии 3.11.
- --enable-wasm-pthreads¶
Включите поддержку pthreads для WASM.
Добавлено в версии 3.11.
3.1.3. Параметры установки¶
- --prefix=PREFIX¶
Установите в PREFIX файлы, не зависящие от архитектуры. В Unix по умолчанию используется значение
/usr/local
.Это значение можно получить во время выполнения с помощью
sys.prefix
.В качестве примера, можно использовать
--prefix="$HOME/.local/"
для установки Python в его домашнюю директорию.
- --exec-prefix=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.1.4. Параметры производительности¶
Для достижения наилучшей производительности рекомендуется настроить Python с помощью --enable-optimizations --with-lto
(PGO + LTO).
- --enable-optimizations¶
Включите оптимизацию с учетом профиля (PGO), используя
PROFILE_TASK
(по умолчанию отключено).Для компилятора C 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=[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.
- --with-computed-gotos¶
Включите вычисляемые переходы в цикле оценки (включено по умолчанию в поддерживаемых компиляторах).
- --without-pymalloc¶
Отключите специализированный распределитель памяти Python pymalloc (включен по умолчанию).
Смотрите также
PYTHONMALLOC
переменную окружения.
- --without-doc-strings¶
Отключите статические строки документации, чтобы уменьшить объем занимаемой памяти (включено по умолчанию). Строки документации, определенные в Python, не затрагиваются.
Не определяйте макрос
WITH_DOC_STRINGS
.Смотрите макрос
PyDoc_STRVAR()
.
- --enable-profiling¶
Включите профилирование кода на уровне C с помощью
gprof
(по умолчанию отключено).
3.1.5. Сборка для отладки на Python¶
Отладочная сборка - это сборка на Python с параметром --with-pydebug
configure.
Эффекты отладочной сборки:
Отображать все предупреждения по умолчанию: список фильтров предупреждений по умолчанию пуст в модуле
warnings
.Добавьте
d
кsys.abiflags
.Добавьте функцию
sys.gettotalrefcount()
.Добавьте параметр командной строки
-X showrefcount
.Добавьте переменную окружения
PYTHONTHREADDEBUG
.Добавьте поддержку переменной
__lltrace__
: включите низкоуровневую трассировку в цикле вычисления байт-кода, если переменная определена.Установите debug hooks on memory allocators для обнаружения переполнения буфера и других ошибок памяти.
Определите макросы
Py_DEBUG
иPy_REF_DEBUG
.Добавьте проверки во время выполнения: код, окруженный символами
#ifdef Py_DEBUG
и#endif
. Включите утвержденияassert(...)
и_PyObject_ASSERT(...)
: не устанавливайте макросNDEBUG
(смотрите также параметр--with-assertions
configure). Основные проверки во время выполнения:Добавьте проверки на работоспособность аргументов функции.
Объекты Unicode и int создаются с заполнением их памяти шаблоном для обнаружения использования неинициализированных объектов.
Убедитесь, что функции, которые могут очистить или заменить текущее исключение, не вызываются с возникновением исключения.
Убедитесь, что функции освобождения не изменяют текущее исключение.
Сборщик мусора (функция:func:gc.collect) выполняет некоторые базовые проверки согласованности объектов.
Макрос
Py_SAFE_DOWNCAST()
проверяет наличие целочисленного переполнения при переходе от широких типов к узким.
Смотрите также параметры настройки Python Development Mode и --with-trace-refs
.
Изменено в версии 3.8: Релизные сборки и отладочные сборки несовместимы с ABI: определение макроса Py_DEBUG
больше не подразумевает использование макроса Py_TRACE_REFS
(см. опцию --with-trace-refs
), что приводит к единственной несовместимости с ABI.
3.1.6. Параметры отладки¶
- --with-pydebug¶
Build Python in debug mode: определите макрос
Py_DEBUG
(по умолчанию отключен).
- --with-trace-refs¶
Включите трассировку ссылок для целей отладки (по умолчанию отключено).
Эффекты:
Определите макрос
Py_TRACE_REFS
.Добавьте функцию
sys.getobjects()
.Добавьте переменную окружения
PYTHONDUMPREFS
.
Эта сборка не совместима с ABI-версией release build (сборка по умолчанию) или debug build (макросы
Py_DEBUG
иPy_REF_DEBUG
).Добавлено в версии 3.8.
- --with-assertions¶
Построение с включенными утверждениями C (по умолчанию - нет):
assert(...);
и_PyObject_ASSERT(...);
.Если задано, то макрос
NDEBUG
не определен в переменной компилятораOPT
.Смотрите также параметр
--with-pydebug
(debug build), который также позволяет использовать утверждения.Добавлено в версии 3.6.
- --with-valgrind¶
Включите поддержку Valgrind (по умолчанию - нет).
- --with-dtrace¶
Включите поддержку DTrace (по умолчанию - нет).
Смотрите Instrumenting CPython with DTrace and 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.1.7. Параметры компоновщика¶
Включите создание общей библиотеки Python:
libpython
(по умолчанию - нет).
- --without-static-libpython¶
Не создавайте
libpythonMAJOR.MINOR.a
и не устанавливайтеpython.o
(встроено и включено по умолчанию).Добавлено в версии 3.10.
3.1.8. Параметры библиотек¶
- --with-libs='lib1 ...'¶
Ссылка на дополнительные библиотеки (по умолчанию - нет).
- --with-system-expat¶
Создайте модуль
pyexpat
, используя установленную библиотекуexpat
(по умолчанию - нет).
- --with-system-ffi¶
Создайте модуль расширения
_ctypes
, используя установленную библиотекуffi
, смотрите модульctypes
(по умолчанию он зависит от системы).
- --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¶
Замените
libc
библиотеку C на STRING (значение по умолчанию зависит от системы).
- --with-openssl=DIR¶
Корневой каталог OpenSSL.
Добавлено в версии 3.7.
- --with-openssl-rpath=[no|auto|DIR]¶
Установите каталог библиотеки времени выполнения (путь) для библиотек OpenSSL:
no
(по умолчанию): не устанавливать rpath;auto
: автоматическое определение rpath из--with-openssl
иpkg-config
;DIR: укажите явный путь.
Добавлено в версии 3.10.
3.1.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
(при встряхивании);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.1.10. Параметры macOS¶
Смотрите Mac/README.rst
.
- --enable-universalsdk¶
- --enable-universalsdk=SDKDIR¶
Создайте универсальную двоичную сборку. SDKDIR указывает, какой пакет SDK для Mac OS следует использовать для выполнения сборки (по умолчанию - нет).
- --enable-framework¶
- --enable-framework=INSTALLDIR¶
Создайте Python.framework вместо традиционной установки Unix. Необязательно INSTALLDIR указывает путь установки (по умолчанию - no).
- --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.1.11. Параметры кросс-компиляции¶
Кросс-компиляция, также известная как кросс-билдинг, может использоваться для сборки Python для другой архитектуры процессора или платформы. Для кросс-компиляции требуется интерпретатор Python для платформы сборки. Версия build Python должна соответствовать версии кросс-скомпилированного хоста Python.
- --build=BUILD¶
настраивается для сборки при сборке, обычно угадывается по config.guess.
- --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.2. Система сборки на Python¶
3.2.1. Основные файлы системы сборки¶
configure.ac
=>configure
;Makefile.pre.in
=>Makefile
( созданоconfigure
);pyconfig.h
(созданоconfigure
);Modules/Setup
: Расширения C, созданные с помощью Makefile с использованием сценария оболочкиModule/makesetup
;setup.py
: Расширения C, созданные с использованием модуляdistutils
.
3.2.2. Основные этапы сборки¶
Файлы C (
.c
) создаются как объектные файлы (.o
).Статическая библиотека
libpython
(.a
) создается из файлов objects.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). Вы можете использовать параметр настроить--enable-optimizations
, чтобы сделать это значение целью командыmake
по умолчанию (make all
или простоmake
).make buildbottest
: Создайте Python и запустите набор тестов Python таким же образом, как и buildbot для тестирования 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__
:
>>> 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*
, создаются как динамические библиотеки.
Скрипт setup.py
создает расширения C только в виде разделяемых библиотек, используя модуль distutils
.
Макросы PyAPI_FUNC()
, PyAPI_DATA()
и 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
при импорте.
3.3. Флаги компилятора и компоновщика¶
Параметры задаются скриптом ./configure
и переменными среды и используются Makefile
.
3.3.1. Флаги препроцессора¶
- CONFIGURE_CPPFLAGS¶
Значение переменной
CPPFLAGS
передается в скрипт./configure
.Добавлено в версии 3.6.
- CPPFLAGS¶
(Objective) Флаги препроцессора C/C++, например
-Iinclude_dir
, если у вас есть заголовки в нестандартном каталоге include_dir.И
CPPFLAGS
, иLDFLAGS
должны содержать значение командной строки для setup.py, чтобы иметь возможность создавать модули расширения, используя каталоги, указанные в переменных среды.
- BASECPPFLAGS¶
Добавлено в версии 3.4.
- PY_CPPFLAGS¶
Добавлены дополнительные флаги препроцессора для создания объектных файлов интерпретатора.
Значение по умолчанию:
$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
.Добавлено в версии 3.2.
3.3.2. Флаги компилятора¶
- CC¶
Команда компилятора языка Си.
Пример:
gcc -pthread
.
- MAINCC¶
Команда компилятора языка Си, используемая для создания функции
main()
в таких программах, какpython
.Переменная, заданная параметром
--with-cxx-main
скрипта configure.Значение по умолчанию:
$(CC)
.
- CXX¶
Команда компилятора C++.
Используется, если используется параметр
--with-cxx-main
.Пример:
g++ -pthread
.
- CFLAGS¶
Флаги компилятора языка Си.
- CFLAGS_NODIST¶
CFLAGS_NODIST
используется для создания расширений интерпретатора и stdlib C. Используйте его, когда флаг компилятора не должен быть частью дистрибутиваCFLAGS
после установки Python (bpo-21121).В частности,
CFLAGS
не должен содержать:флаг компилятора
-I
(для задания пути поиска включаемых файлов). Флаги-I
обрабатываются слева направо, и любые флаги вCFLAGS
будут иметь приоритет над флагами, предоставляемыми пользователем и пакетом-I
.жесткие флажки, такие как
-Werror
, потому что дистрибутивы не могут контролировать, соответствуют ли пакеты, установленные пользователями, таким повышенным стандартам.
Добавлено в версии 3.5.
- EXTRA_CFLAGS¶
Дополнительные флаги компилятора языка Си.
- 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¶
Флаги языка Си, используемые для создания объектных файлов интерпретатора.
Значение по умолчанию:
$(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.3.3. Флаги компоновщика¶
- LINKCC¶
Команда компоновщика, используемая для создания таких программ, как
python
и_testembed
.Значение по умолчанию:
$(PURIFY) $(MAINCC)
.
- CONFIGURE_LDFLAGS¶
Значение переменной
LDFLAGS
передается в скрипт./configure
.Избегайте назначения
CFLAGS
,LDFLAGS
, и т.д. , чтобы пользователи могли использовать их в командной строке для добавления к этим значениям, не изменяя предварительно установленные значения.Добавлено в версии 3.2.
- LDFLAGS_NODIST¶
LDFLAGS_NODIST
используется так же, как иCFLAGS_NODIST
. Используйте его, когда флаг компоновщика не должен быть частью дистрибутиваLDFLAGS
после установки Python (bpo-35257).В частности,
LDFLAGS
не должен содержать:флаг компилятора
-L
(для задания пути поиска библиотек). Флаги-L
обрабатываются слева направо, и любые флаги вLDFLAGS
будут иметь приоритет над флагами, предоставляемыми пользователем и пакетом-L
.
- CONFIGURE_LDFLAGS_NODIST¶
Значение переменной
LDFLAGS_NODIST
передается в скрипт./configure
.Добавлено в версии 3.8.
- LDFLAGS¶
Флаги компоновщика, например
-Llib_dir
, если у вас есть библиотеки в нестандартном каталоге lib_dir.И
CPPFLAGS
, и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.