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/zon
   einfo:/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 "-I*include_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 "-L*lib_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.
