3. Python konfigurieren

3.1. Optionen von configure

List all ./configure script options using:

./configure --help

Siehe auch Misc/SpecialBuilds.txt in der Python-Quelldistribution.

3.1.1. Allgemeine Optionen

--enable-loadable-sqlite-extensions

Unterstützt ladbare Erweiterungen im Erweiterungsmodul _sqlite des Moduls sqlite3 (Vorgabe ist nein).

Siehe die Methode sqlite3.Connection.enable_load_extension() des Moduls sqlite3.

Neu in Version 3.6.

--disable-ipv6

Schaltet die Unterstützung für IPv6 ab (standardmäßig eingeschaltet, sofern unterstützt), siehe das Modul socket.

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

Legt die Größe der Ziffern von Python-int in Bit fest: 15 oder 30 Bit.

Standardmäßig beträgt die Zifferngröße 30.

Setzt PYLONG_BITS_IN_DIGIT auf 15 oder 30.

Siehe sys.int_info.bits_per_digit.

--with-cxx-main
--with-cxx-main=COMPILER

Compile the Python main() function and link Python executable with C++ compiler: $CXX, or COMPILER if specified.

--with-suffix=SUFFIX

Setzt das Suffix der ausführbaren Python-Datei auf SUFFIX.

Das Standardsuffix ist .exe unter Windows und macOS (ausführbare Datei python.exe), .js bei Emscripten node, .html bei Emscripten browser, .wasm bei WASI und eine leere Zeichenkette auf den übrigen Plattformen (ausführbare Datei python).

Geändert in Version 3.11: Das Standardsuffix auf der WASM-Plattform ist eines von .js, .html oder .wasm.

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

Wählt den Standard-Suchpfad für Zeitzonen für zoneinfo.TZPATH. Siehe die Konfiguration zur Übersetzungszeit des Moduls zoneinfo.

Vorgabe: /usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo.

Siehe den Pfadtrenner os.pathsep.

Neu in Version 3.9.

--without-decimal-contextvar

Baut das Erweiterungsmodul _decimal mit einem Thread-lokalen Kontext anstelle eines Coroutine-lokalen Kontexts (Vorgabe), siehe das Modul decimal.

Siehe decimal.HAVE_CONTEXTVAR und das Modul contextvars.

Neu in Version 3.9.

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

Überschreibt die Reihenfolge, in der die Datenbank-Backends für das Modul dbm geprüft werden

Ein gültiger Wert ist eine mit Doppelpunkt (:) getrennte Zeichenkette mit den Namen der Backends:

  • ndbm;

  • gdbm;

  • bdb.

--without-c-locale-coercion

Schaltet die Angleichung der C-Locale an eine UTF-8-basierte Locale ab (standardmäßig eingeschaltet).

Definiert das Makro PY_COERCE_C_LOCALE nicht.

Siehe PYTHONCOERCECLOCALE und PEP 538.

--with-platlibdir=DIRNAME

Name des Verzeichnisses der Python-Bibliothek (Vorgabe ist lib).

Fedora und SuSE verwenden auf 64-Bit-Plattformen lib64.

Siehe sys.platlibdir.

Neu in Version 3.9.

--with-wheel-pkg-dir=PATH

Verzeichnis der Wheel-Pakete, die das Modul ensurepip verwendet (standardmäßig keines).

Die Paketierungsrichtlinien einiger Linux-Distributionen empfehlen, Abhängigkeiten nicht beizulegen. Fedora installiert Wheel-Pakete zum Beispiel im Verzeichnis /usr/share/python-wheels/ und installiert das Paket ensurepip._bundled nicht.

Neu in Version 3.10.

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

Ob configure pkg-config verwenden soll, um die Abhängigkeiten für den Build zu erkennen.

  • check (Vorgabe): pkg-config ist optional

  • yes: pkg-config ist zwingend

  • no: configure verwendet pkg-config nicht, selbst wenn es vorhanden ist

Neu in Version 3.11.

--enable-pystats

Turn on internal statistics gathering.

The statistics will be dumped to a arbitrary (probably unique) file in /tmp/py_stats/, or C:\temp\py_stats\ on Windows.

Zum Lesen der Daten verwende Tools/scripts/summarize_stats.py.

Neu in Version 3.11.

3.1.2. WebAssembly-Optionen

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

Set build flavor for wasm32-emscripten.

  • browser (default): preload minimal stdlib, default MEMFS.

  • node: NODERAWFS and pthread support.

Neu in Version 3.11.

--enable-wasm-dynamic-linking

Schaltet die Unterstützung für dynamisches Linken bei WASM ein.

Dynamisches Linken ermöglicht dlopen. Die Dateigröße der ausführbaren Datei wächst, weil toter Code nur begrenzt entfernt werden kann und zusätzliche Funktionen hinzukommen.

Neu in Version 3.11.

--enable-wasm-pthreads

Schaltet die Unterstützung für pthreads bei WASM ein.

Neu in Version 3.11.

3.1.3. Optionen für die Installation

--prefix=PREFIX

Installiert architekturunabhängige Dateien in PREFIX. Unter Unix ist die Vorgabe /usr/local.

Dieser Wert lässt sich zur Laufzeit über sys.prefix abrufen.

Mit --prefix="$HOME/.local/" lässt sich Python zum Beispiel im eigenen Benutzerverzeichnis installieren.

--exec-prefix=EPREFIX

Installiert architekturabhängige Dateien in EPREFIX, Vorgabe ist --prefix.

Dieser Wert lässt sich zur Laufzeit über sys.exec_prefix abrufen.

--disable-test-modules

Baut und installiert die Testmodule nicht, etwa das Paket test oder das Erweiterungsmodul _testcapi (werden standardmäßig gebaut und installiert).

Neu in Version 3.10.

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

Wählt den Befehl von ensurepip, der bei der Python-Installation ausgeführt wird:

  • upgrade (Vorgabe): führt python -m ensurepip --altinstall --upgrade aus.

  • install: führt python -m ensurepip --altinstall aus;

  • no: führt ensurepip nicht aus;

Neu in Version 3.6.

3.1.4. Optionen für die Leistung

Configuring Python using --enable-optimizations --with-lto (PGO + LTO) is recommended for best performance.

--enable-optimizations

Schaltet Profile Guided Optimization (PGO) über PROFILE_TASK ein (standardmäßig abgeschaltet).

Der C-Compiler Clang benötigt für PGO das Programm llvm-profdata. Unter macOS benötigt es auch GCC, denn GCC ist dort nur ein anderer Name für Clang.

Schaltet außerdem die semantische Interposition in libpython ab, wenn --enable-shared und GCC verwendet werden: fügt -fno-semantic-interposition zu den Compiler- und Linker-Flags hinzu.

Neu in Version 3.6.

Geändert in Version 3.10: Verwendet -fno-semantic-interposition bei GCC.

PROFILE_TASK

Im Makefile verwendete Umgebungsvariable: die Python-Befehlszeilenargumente für die Aufgabe, die das Profil erzeugt.

Vorgabe: -m test --pgo --timeout=$(TESTTIMEOUT).

Neu in Version 3.8.

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

Schaltet Link Time Optimization (LTO) in jedem Build ein (standardmäßig abgeschaltet).

Der C-Compiler Clang benötigt für LTO llvm-ar (unter macOS ar) sowie einen LTO-fähigen Linker (ld.gold oder lld).

Neu in Version 3.6.

Neu in Version 3.11: Um ThinLTO zu verwenden, nimm bei Clang --with-lto=thin.

--with-computed-gotos

Schaltet berechnete gotos in der Auswertungsschleife ein (auf unterstützten Compilern standardmäßig eingeschaltet).

--without-pymalloc

Schaltet den spezialisierten Python-Speicherallokator pymalloc ab (standardmäßig eingeschaltet).

Siehe auch die Umgebungsvariable PYTHONMALLOC.

--without-doc-strings

Schaltet statische Dokumentationszeichenketten ab, um den Speicherbedarf zu verringern (standardmäßig eingeschaltet). In Python definierte Dokumentationszeichenketten sind davon nicht betroffen.

Definiert das Makro WITH_DOC_STRINGS nicht.

Siehe das Makro PyDoc_STRVAR().

--enable-profiling

Schaltet die Profilierung von Code auf C-Ebene mit gprof ein (standardmäßig abgeschaltet).

3.1.5. Debug-Build von Python

Ein Debug-Build ist ein Python, das mit der configure-Option --with-pydebug gebaut wurde.

Wirkung eines Debug-Builds:

  • Zeigt standardmäßig alle Warnungen an: die Liste der Standard-Warnfilter im Modul warnings ist leer.

  • Fügt d zu sys.abiflags hinzu.

  • Fügt die Funktion sys.gettotalrefcount() hinzu.

  • Fügt die Befehlszeilenoption -X showrefcount hinzu.

  • Add PYTHONTHREADDEBUG environment variable.

  • Fügt Unterstützung für die Variable __lltrace__ hinzu: schaltet die Verfolgung auf niedriger Ebene in der Bytecode-Auswertungsschleife ein, wenn die Variable definiert ist.

  • Installiert Debug-Haken an den Speicherallokatoren, um Pufferüberläufe und andere Speicherfehler zu erkennen.

  • Definiert die Makros Py_DEBUG und Py_REF_DEBUG.

  • Fügt Laufzeitprüfungen hinzu: Code, der von #ifdef Py_DEBUG und #endif umgeben ist. Schaltet die Zusicherungen assert(...) und _PyObject_ASSERT(...) ein, indem das Makro NDEBUG nicht gesetzt wird (siehe auch die configure-Option --with-assertions). Die wichtigsten Laufzeitprüfungen:

    • Fügt Plausibilitätsprüfungen der Funktionsargumente hinzu.

    • Unicode- und int-Objekte werden mit einem Muster im Speicher erzeugt, damit die Verwendung nicht initialisierter Objekte auffällt.

    • Stellt sicher, dass Funktionen, die die aktuelle Ausnahme löschen oder ersetzen können, nicht bei ausgelöster Ausnahme aufgerufen werden.

    • Prüft, dass Freigabefunktionen die aktuelle Ausnahme nicht verändern.

    • Der Garbage Collector (Funktion gc.collect()) führt einige grundlegende Prüfungen der Objektkonsistenz durch.

    • Das Makro Py_SAFE_DOWNCAST() prüft auf Unter- und Überlauf von Ganzzahlen, wenn von breiten auf schmale Typen herabgecastet wird.

Siehe auch den Entwicklungsmodus von Python und die configure-Option --with-trace-refs.

Geändert in Version 3.8: Release builds and debug builds are now ABI compatible: defining the Py_DEBUG macro no longer implies the Py_TRACE_REFS macro (see the --with-trace-refs option), which introduces the only ABI incompatibility.

3.1.6. Debug-Optionen

--with-pydebug

Baut Python im Debug-Modus: definiert das Makro Py_DEBUG (standardmäßig abgeschaltet).

--with-trace-refs

Schaltet die Verfolgung von Referenzen zur Fehlersuche ein (standardmäßig abgeschaltet).

Wirkung:

  • Definiert das Makro Py_TRACE_REFS.

  • Add sys.getobjects() function.

  • Fügt die Umgebungsvariable PYTHONDUMPREFS hinzu.

This build is not ABI compatible with release build (default build) or debug build (Py_DEBUG and Py_REF_DEBUG macros).

Neu in Version 3.8.

--with-assertions

Baut mit eingeschalteten C-Zusicherungen (Vorgabe ist nein): assert(...); und _PyObject_ASSERT(...);.

Wenn gesetzt, wird das Makro NDEBUG in der Compiler-Variablen OPT nicht definiert.

Siehe auch die Option --with-pydebug (Debug-Build), die Zusicherungen ebenfalls einschaltet.

Neu in Version 3.6.

--with-valgrind

Schaltet die Unterstützung für Valgrind ein (Vorgabe ist nein).

--with-dtrace

Schaltet die Unterstützung für DTrace ein (Vorgabe ist nein).

Siehe CPython mit DTrace und SystemTap instrumentieren.

Neu in Version 3.6.

--with-address-sanitizer

Enable AddressSanitizer memory error detector, asan (default is no).

Neu in Version 3.6.

--with-memory-sanitizer

Schaltet den Belegungsfehlersucher MemorySanitizer ein, msan (Vorgabe ist nein).

Neu in Version 3.6.

--with-undefined-behavior-sanitizer

Schaltet den Sucher für undefiniertes Verhalten UndefinedBehaviorSanitizer ein, ubsan (Vorgabe ist nein).

Neu in Version 3.6.

3.1.7. Optionen des Linkers

--enable-shared

Schaltet das Bauen einer gemeinsam genutzten Python-Bibliothek ein: libpython (Vorgabe ist nein).

--without-static-libpython

Baut libpythonMAJOR.MINOR.a nicht und installiert python.o nicht (wird standardmäßig gebaut und eingeschaltet).

Neu in Version 3.10.

3.1.8. Optionen für Bibliotheken

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

Linkt gegen zusätzliche Bibliotheken (Vorgabe ist nein).

--with-system-expat

Baut das Modul pyexpat mit einer installierten expat-Bibliothek (Vorgabe ist nein).

--with-system-ffi

Build the _ctypes extension module using an installed ffi library, see the ctypes module (default is system-dependent).

--with-system-libmpdec

Build the _decimal extension module using an installed mpdec library, see the decimal module (default is no).

Neu in Version 3.3.

--with-readline=editline

Use editline library for backend of the readline module.

Define the WITH_EDITLINE macro.

Neu in Version 3.10.

--without-readline

Baut das Modul readline nicht (wird standardmäßig gebaut).

Definiert das Makro HAVE_LIBREADLINE nicht.

Neu in Version 3.10.

--with-libm=STRING

Überschreibt die Mathematikbibliothek libm mit STRING (Vorgabe ist systemabhängig).

--with-libc=STRING

Überschreibt die C-Bibliothek libc mit STRING (Vorgabe ist systemabhängig).

--with-openssl=DIR

Wurzelverzeichnis von OpenSSL.

Neu in Version 3.7.

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

Legt das Laufzeit-Bibliotheksverzeichnis (rpath) für die OpenSSL-Bibliotheken fest:

  • no (Vorgabe): setzt keinen rpath;

  • auto: ermittelt den rpath selbsttätig aus --with-openssl und pkg-config;

  • DIR: setzt einen ausdrücklichen rpath.

Neu in Version 3.10.

3.1.9. Sicherheitsoptionen

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

Wählt den Hash-Algorithmus für die Verwendung in Python/pyhash.c:

  • siphash13 (default);

  • siphash24;

  • fnv.

Neu in Version 3.4.

Neu in Version 3.11: siphash13 kam hinzu und ist die neue Vorgabe.

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

Integrierte Hash-Module:

  • md5;

  • sha1;

  • sha256;

  • sha512;

  • sha3 (mit shake);

  • blake2.

Neu in Version 3.9.

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

Überschreibt die Zeichenkette der Standard-Cipher-Suites von OpenSSL:

  • python (Vorgabe): verwendet die von Python bevorzugte Auswahl;

  • openssl: lässt die Vorgaben von OpenSSL unangetastet;

  • STRING: verwendet eine eigene Zeichenkette

Siehe das Modul ssl.

Neu in Version 3.7.

Geändert in Version 3.10: Die Einstellungen python und STRING setzen zusätzlich TLS 1.2 als niedrigste Protokollversion.

3.1.10. macOS-Optionen

See Mac/README.rst.

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

Erzeugt einen Build als universelle Binärdatei. SDKDIR gibt an, welches macOS-SDK für den Build verwendet werden soll (Vorgabe ist nein).

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

Erzeugt ein Python.framework anstelle einer herkömmlichen Unix-Installation. Das optionale INSTALLDIR gibt den Installationspfad an (Vorgabe ist nein).

--with-universal-archs=ARCH

Gibt an, welche Art universeller Binärdatei erzeugt werden soll. Diese Option ist nur gültig, wenn --enable-universalsdk gesetzt ist.

Optionen:

  • universal2;

  • 32-bit;

  • 64-bit;

  • 3-way;

  • intel;

  • intel-32;

  • intel-64;

  • all.

--with-framework-name=FRAMEWORK

Gibt den Namen des Python-Frameworks unter macOS an, nur gültig, wenn --enable-framework gesetzt ist (Vorgabe: Python).

3.1.11. Optionen für das Cross-Kompilieren

Mit Cross-Kompilieren, auch Cross-Bauen genannt, lässt sich Python für eine andere CPU-Architektur oder Plattform bauen. Cross-Kompilieren setzt einen Python-Interpreter für die Bauplattform voraus. Die Version des bauenden Python muss zur Version des cross-kompilierten Ziel-Python passen.

--build=BUILD

konfiguriert für das Bauen auf BUILD, wird üblicherweise von config.guess erraten.

--host=HOST

cross-kompiliert, um Programme zu bauen, die auf HOST (der Zielplattform) laufen

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

Pfad zur ausführbaren python-Datei des Builds für das Cross-Kompilieren

Neu in Version 3.11.

CONFIG_SITE=file

Eine Umgebungsvariable, die auf eine Datei mit Überschreibungen für configure verweist.

Beispiel für eine Datei config.site:

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

Beispiel für Cross-Kompilieren:

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. Das Bausystem von Python

3.2.1. Die wichtigsten Dateien des Bausystems

  • configure.ac => configure;

  • Makefile.pre.in => Makefile (von configure erzeugt);

  • pyconfig.h (von configure erzeugt);

  • Modules/Setup: C-Erweiterungen, die das Makefile mit dem Shell-Skript Module/makesetup baut;

  • setup.py: C extensions built using the distutils module.

3.2.2. Die wichtigsten Bauschritte

  • C-Dateien (.c) werden zu Objektdateien (.o) gebaut.

  • Aus den Objektdateien wird eine statische libpython-Bibliothek (.a) erzeugt.

  • python.o und die statische libpython-Bibliothek werden zum endgültigen Programm python gelinkt.

  • C extensions are built by the Makefile (see Modules/Setup) and python setup.py build.

3.2.3. Die wichtigsten Makefile-Ziele

  • make: Build Python with the standard library.

  • make platform:: build the python program, but don’t build the standard library extension modules.

  • make profile-opt: build Python using Profile Guided Optimization (PGO). You can use the configure --enable-optimizations option to make this the default target of the make command (make all or just make).

  • make buildbottest: Build Python and run the Python test suite, the same way than buildbots test Python. Set TESTTIMEOUT variable (in seconds) to change the test timeout (1200 by default: 20 minutes).

  • make install: Build and install Python.

  • make regen-all: Regenerate (almost) all generated files; make regen-stdlib-module-names and autoconf must be run separately for the remaining generated files.

  • make clean: Remove built files.

  • make distclean: Same than make clean, but remove also files created by the configure script.

3.2.4. C-Erweiterungen

Einige C-Erweiterungen werden als integrierte Module gebaut, etwa das Modul sys. Sie werden mit definiertem Makro Py_BUILD_CORE_BUILTIN gebaut. Integrierte Module haben kein Attribut __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__'

Andere C-Erweiterungen werden als dynamische Bibliotheken gebaut, etwa das Modul _asyncio. Sie werden mit definiertem Makro Py_BUILD_CORE_MODULE gebaut. Beispiel unter 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 dient dazu, Makefile-Ziele zum Bauen der C-Erweiterungen zu erzeugen. Am Anfang der Datei werden C-Erweiterungen als integrierte Module gebaut. Erweiterungen, die nach der Marke *shared* definiert sind, werden als dynamische Bibliotheken gebaut.

The setup.py script only builds C extensions as shared libraries using the distutils module.

The PyAPI_FUNC(), PyAPI_DATA() and PyMODINIT_FUNC macros of Include/pyport.h are defined differently depending if the Py_BUILD_CORE_MODULE macro is defined:

  • Verwendet Py_EXPORTED_SYMBOL, wenn Py_BUILD_CORE_MODULE definiert ist

  • Verwendet andernfalls Py_IMPORTED_SYMBOL.

Wird das Makro Py_BUILD_CORE_BUILTIN versehentlich bei einer C-Erweiterung verwendet, die als gemeinsam genutzte Bibliothek gebaut wird, wird deren Funktion PyInit_xxx() nicht exportiert, was beim Import einen ImportError auslöst.

3.3. Compiler- und Linker-Flags

Optionen, die das Skript ./configure und Umgebungsvariablen setzen und die das Makefile verwendet.

3.3.1. Flags des Präprozessors

CONFIGURE_CPPFLAGS

Wert der Variablen CPPFLAGS, der an das Skript ./configure übergeben wird.

Neu in Version 3.6.

CPPFLAGS

Flags des (Objective-)C/C++-Präprozessors, etwa -Iinclude_dir, wenn deine Headerdateien in einem nicht standardmäßigen Verzeichnis include_dir liegen.

Both CPPFLAGS and LDFLAGS need to contain the shell’s value for setup.py to be able to build extension modules using the directories specified in the environment variables.

BASECPPFLAGS

Neu in Version 3.4.

PY_CPPFLAGS

Zusätzliche Präprozessor-Flags, die beim Bauen der Objektdateien des Interpreters hinzugefügt werden.

Vorgabe: $(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS).

Neu in Version 3.2.

3.3.2. Compiler-Flags

CC

Befehl des C-Compilers.

Beispiel: gcc -pthread.

MAINCC

C compiler command used to build the main() function of programs like python.

Variable set by the --with-cxx-main option of the configure script.

Default: $(CC).

CXX

Befehl des C++-Compilers.

Used if the --with-cxx-main option is used.

Beispiel: g++ -pthread.

CFLAGS

Flags des C-Compilers.

CFLAGS_NODIST

CFLAGS_NODIST is used for building the interpreter and stdlib C extensions. Use it when a compiler flag should not be part of the distutils CFLAGS once Python is installed (bpo-21121).

Insbesondere sollte CFLAGS nicht enthalten:

  • das Compiler-Flag -I (das den Suchpfad für Include-Dateien setzt). Die -I-Flags werden von links nach rechts verarbeitet, Flags in CFLAGS hätten daher Vorrang vor -I-Flags, die Benutzer oder Pakete mitgeben.

  • Härtungsflags wie -Werror, weil Distributionen nicht steuern können, ob von Benutzern installierte Pakete solchen verschärften Maßstäben entsprechen.

Neu in Version 3.5.

EXTRA_CFLAGS

Zusätzliche Flags für den C-Compiler.

CONFIGURE_CFLAGS

Wert der Variablen CFLAGS, der an das Skript ./configure übergeben wird.

Neu in Version 3.2.

CONFIGURE_CFLAGS_NODIST

Wert der Variablen CFLAGS_NODIST, der an das Skript ./configure übergeben wird.

Neu in Version 3.5.

BASECFLAGS

Grundlegende Compiler-Flags.

OPT

Optimierungsflags.

CFLAGS_ALIASING

Flags für strenges oder nicht strenges Aliasing, mit denen Python/dtoa.c kompiliert wird.

Neu in Version 3.7.

CCSHARED

Compiler-Flags zum Bauen einer gemeinsam genutzten Bibliothek.

Unter Linux und BSD wird zum Beispiel -fPIC verwendet.

CFLAGSFORSHARED

Zusätzliche C-Flags, die beim Bauen der Objektdateien des Interpreters hinzugefügt werden.

Vorgabe: $(CCSHARED), wenn --enable-shared verwendet wird, andernfalls eine leere Zeichenkette.

PY_CFLAGS

Vorgabe: $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS).

PY_CFLAGS_NODIST

Vorgabe: $(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal.

Neu in Version 3.5.

PY_STDMODULE_CFLAGS

C-Flags, mit denen die Objektdateien des Interpreters gebaut werden.

Vorgabe: $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED).

Neu in Version 3.7.

PY_CORE_CFLAGS

Vorgabe: $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE.

Neu in Version 3.2.

PY_BUILTIN_MODULE_CFLAGS

Compiler-Flags, um ein Erweiterungsmodul der Standardbibliothek als integriertes Modul zu bauen, etwa das Modul posix.

Vorgabe: $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN.

Neu in Version 3.8.

PURIFY

Befehl für Purify. Purify ist ein Programm zur Speicherfehlersuche.

Vorgabe: leere Zeichenkette (nicht verwendet).

3.3.3. Linker-Flags

LINKCC

Linker-Befehl, mit dem Programme wie python und _testembed gebaut werden.

Default: $(PURIFY) $(MAINCC).

CONFIGURE_LDFLAGS

Wert der Variablen LDFLAGS, der an das Skript ./configure übergeben wird.

Vermeide es, CFLAGS, LDFLAGS und so weiter zuzuweisen, damit Benutzer sie auf der Befehlszeile verwenden können, um etwas an diese Werte anzuhängen, ohne die vorbelegten Werte zu zertreten.

Neu in Version 3.2.

LDFLAGS_NODIST

LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST. Use it when a linker flag should not be part of the distutils LDFLAGS once Python is installed (bpo-35257).

Insbesondere sollte LDFLAGS nicht enthalten:

  • das Compiler-Flag -L (das den Suchpfad für Bibliotheken setzt). Die -L-Flags werden von links nach rechts verarbeitet, Flags in LDFLAGS hätten daher Vorrang vor -L-Flags, die Benutzer oder Pakete mitgeben.

CONFIGURE_LDFLAGS_NODIST

Wert der Variablen LDFLAGS_NODIST, der an das Skript ./configure übergeben wird.

Neu in Version 3.8.

LDFLAGS

Linker-Flags, etwa -Llib_dir, wenn deine Bibliotheken in einem nicht standardmäßigen Verzeichnis lib_dir liegen.

Both CPPFLAGS and LDFLAGS need to contain the shell’s value for setup.py to be able to build extension modules using the directories specified in the environment variables.

LIBS

Linker-Flags, um dem Linker beim Linken der ausführbaren Python-Datei Bibliotheken zu übergeben.

Beispiel: -lrt.

LDSHARED

Befehl zum Bauen einer gemeinsam genutzten Bibliothek.

Vorgabe: @LDSHARED@ $(PY_LDFLAGS).

BLDSHARED

Befehl zum Bauen der gemeinsam genutzten Bibliothek libpython.

Vorgabe: @BLDSHARED@ $(PY_CORE_LDFLAGS).

PY_LDFLAGS

Vorgabe: $(CONFIGURE_LDFLAGS) $(LDFLAGS).

PY_LDFLAGS_NODIST

Vorgabe: $(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST).

Neu in Version 3.8.

PY_CORE_LDFLAGS

Linker-Flags, mit denen die Objektdateien des Interpreters gebaut werden.

Neu in Version 3.8.