3. Configurar Python
********************


3.1. Configurar opciones
========================

Enumerar todas las opciones del script "./configure" usando:

   ./configure --help

Consultar también "Misc/SpecialBuilds.txt" en la distribución fuente
de Python.


3.1.1. Opciones generales
-------------------------

--enable-loadable-sqlite-extensions

   Admite extensiones cargables en el módulo de extensión "_sqlite"
   (el valor por defecto es no).

   Consultar el método "sqlite3.Connection.enable_load_extension()"
   del módulo "sqlite3".

   Nuevo en la versión 3.6.

--disable-ipv6

   Deshabilita la compatibilidad con IPv6 (habilitada de forma
   predeterminada si es compatible), consulte el módulo "socket".

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

   Define el tamaño en bits de los dígitos "int" de Python: 15 o 30
   bits.

   De forma predeterminada, el número de bits se selecciona según
   "sizeof(void*)": 30 bits si el tamaño de "void*" es de 64 bits o
   mayor, 15 bits en caso contrario.

   Define el "PYLONG_BITS_IN_DIGIT" en "15" o "30".

   Consultar "sys.int_info.bits_per_digit".

--with-cxx-main

--with-cxx-main=COMPILER

   Compila la función de Python "main()" y vincula el ejecutable de
   Python con el compilador de C++: "$CXX", o *COMPILER* si se
   especifica.

--with-suffix=SUFFIX

   Establece el sufijo ejecutable de Python en *SUFFIX*.

   El sufijo por defecto es ".exe" en Windows y macOS (ejecutable
   "python.exe"), y una cadena de caracteres vacía en otras
   plataformas (ejecutable "python").

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

   Selecciona la ruta de búsqueda de zona horaria predeterminada para
   "zoneinfo.TZPATH". Consultar la Configuración en tiempo de
   compilación del módulo "zoneinfo".

   Por defecto: "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib
   /zoneinfo:/etc/zoneinfo".

   Consultar separador de rutas "os.pathsep" .

   Nuevo en la versión 3.9.

--without-decimal-contextvar

   Construye el módulo de extensión "_decimal" usando un contexto
   local de hilos en lugar de un contexto local de corutinas
   (predeterminado), consultar el módulo "decimal".

   Consultar "decimal.HAVE_CONTEXTVAR" y el módulo "contextvars".

   Nuevo en la versión 3.9.

--with-dbmliborder=db1:db2:...

   Sobrescribe el orden para verificar los de las bases datos para el
   módulo "dbm"

   Un valor válido es una cadena de caracteres separada por dos puntos
   (":") con los nombres de los backends:

   * "ndbm";

   * "gdbm";

   * "bdb".

--without-c-locale-coercion

   Deshabilita la coerción de configuración regional C a una
   configuración regional basada en UTF-8 (habilitada de forma
   predeterminada).

   No define la macro "PY_COERCE_C_LOCALE".

   Consultar "PYTHONCOERCECLOCALE" y el **PEP 538**.

--with-platlibdir=DIRNAME

   Nombre del directorio de la biblioteca de Python (por defecto es
   "lib").

   Fedora y SuSE usan "lib64" en plataformas 64-bit.

   Consultar "sys.platlibdir".

   Nuevo en la versión 3.9.

--with-wheel-pkg-dir=PATH

   Directorio de los paquetes *wheel* usados por el módulo "ensurepip"
   (ninguno por defecto)

   Algunas políticas de empaquetado de distribución de Linux
   recomiendan no empaquetar dependencias. Por ejemplo, Fedora instala
   paquetes *wheel* en el directorio "/usr/share/python-wheels/" y no
   instala el paquete "ensurepip._bundled".

   Nuevo en la versión 3.10.


3.1.2. Opciones de instalación
------------------------------

--prefix=PREFIX

   Install architecture-independent files in PREFIX. On Unix, it
   defaults to "/usr/local".

   This value can be retrived at runtime using "sys.prefix".

   As an example, one can use "--prefix="$HOME/.local/"" to install a
   Python in its home directory.

--exec-prefix=EPREFIX

   Install architecture-dependent files in EPREFIX, defaults to "--
   prefix".

   This value can be retrived at runtime using "sys.exec_prefix".

--disable-test-modules

   No construya ni instale módulos de prueba, como el paquete "test" o
   el módulo de extensión "_testcapi" (construido e instalado por
   defecto).

   Nuevo en la versión 3.10.

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

   Selecciona el comando "ensurepip" que se ejecuta en la instalación
   de Python:

   * "upgrade" (por defecto): ejecutar el comando "python -m ensurepip
     --altinstall --upgrade".

   * "install": ejecutar el comando "python -m ensurepip
     --altinstall";

   * "no": no ejecuta ensurepip;

   Nuevo en la versión 3.6.


3.1.3. Opciones de desempeño
----------------------------

Se recomienda configurar Python usando "--enable-optimizations --with-
lto" (PGO + LTO) para obtener el mejor rendimiento.

--enable-optimizations

   Habilite la Optimización Guiada por Perfiles (*PGO* por sus siglas
   en inglés) usando "PROFILE_TASK" (deshabilitado de forma
   predeterminada).

   El compilador de C Clang requiere el programa "llvm-profdata" para
   PGO. En macOS, GCC también lo requiere: GCC es solo un alias de
   Clang en macOS.

   Desactiva también la interposición semántica en libpython si se usa
   "--enable-shared" y GCC: agregar "-fno-semantic-interposition" a
   los flags del compilador y del enlazador.

   Nuevo en la versión 3.6.

   Distinto en la versión 3.10: Usar "-fno-semantic-interposition" en
   GCC.

PROFILE_TASK

   Variable de entorno utilizada en el Makefile: argumentos de la
   línea de comando Python para la tarea de generación de PGO.

   Por defecto: "-m test --pgo --timeout=$(TESTTIMEOUT)".

   Nuevo en la versión 3.8.

--with-lto

   Habilita la Optimización de Tiempo de Enlace (*LTO* por sus siglas
   en inglés) en cualquier compilación (deshabilitado de forma
   predeterminada).

   El compilador de C Clang requiere "llvm-ar" para LTO ("ar" en
   macOS), así como un enlazador compatible con LTO ("ld.gold" o
   "lld").

   Nuevo en la versión 3.6.

--with-computed-gotos

   Habilita los *gotos* calculados en el ciclo de evaluación
   (habilitado de forma predeterminada en los compiladores
   compatibles).

--without-pymalloc

   Deshabilita el asignador de memoria especializado de Python
   pymalloc (habilitado de forma predeterminada).

   Consultar también la variable de entorno "PYTHONMALLOC".

--without-doc-strings

   Deshabilita las cadenas de caracteres de documentación estáticas
   para reducir el espacio de memoria (habilitado de forma
   predeterminada). Las cadenas de caracteres de documentación
   definidas en Python no se ven afectadas.

   No define la macro "WITH_DOC_STRINGS".

   Consultar la macro "PyDoc_STRVAR()".

--enable-profiling

   Habilita el análisis de rendimiento de código (*profiling*) de
   nivel C con "gprof" (deshabilitado de forma predeterminada).


3.1.4. Compilación de depuración de Python
------------------------------------------

Una compilación de depuración es Python construido con la opción de
configuración "--with-pydebug".

Efectos de una compilación de depuración:

* Muestra todas las advertencias de forma predeterminada: la lista de
  filtros de advertencia predeterminados está vacía en el módulo
  "warnings".

* Agrega "d" a "sys.abiflags".

* Agrega la función "sys.gettotalrefcount()".

* Agrega la opción de línea de comando "-X showrefcount".

* Agrega la variable de entorno "PYTHONTHREADDEBUG".

* Agrega soporte para la variable "__ltrace__": habilita el rastreo de
  bajo nivel en el ciclo de evaluación del código de bytes si la
  variable está definida.

* Instala ganchos de depuración en los asignadores de memoria para
  detectar el desbordamiento del búfer y otros errores de memoria.

* Define las macros "Py_DEBUG" y "Py_REF_DEBUG".

* Agrega verificaciones de tiempo de ejecución: código rodeado por
  "`#ifdef Py_DEBUG" y *#endif`*. Habilite las aserciones
  "assert(...)" y "_PyObject_ASSERT(...)": no configure la macro
  "NDEBUG" (consultar también la opción de configuración "--with-
  assertions"). Comprobaciones principales de tiempo de ejecución:

  * Agregue controles de sanidad en los argumentos de la función.

  * Los objetos unicode e int se crean con su memoria completa con un
    patrón para detectar el uso de objetos no inicializados.

  * Asegúrese de que las funciones que pueden borrar o reemplazar la
    excepción actual no se invocan con una excepción lanzada.

  * El recolector de basura (función "gc.collect()") ejecuta algunas
    comprobaciones básicas sobre la consistencia de los objetos.

  * La macro "Py_SAFE_DOWNCAST()" comprueba el subdesbordamiento y el
    desbordamiento de enteros al realizar una conversión descendente
    de tipos anchos a tipos estrechos.

Consultar también Modo de Desarrollo de Python y la opción de
configuración "--with-trace-refs".

Distinto en la versión 3.8: Las compilaciones de lanzamiento y las
compilaciones de depuración ahora son compatibles con ABI: definir la
macro "Py_DEBUG" ya no implica la macro "Py_TRACE_REFS" (consultar la
opción "--with-trace-refs"), que presenta la única Incompatibilidad
ABI.


3.1.5. Opciones de depuración
-----------------------------

--with-pydebug

   Compila Python en modo de depuración: define la macro "Py_DEBUG"
   (deshabilitada por defecto).

--with-trace-refs

   Habilita las referencias de seguimiento con fines de depuración
   (deshabilitado de forma predeterminada).

   Efectos:

   * Define la macro "Py_TRACE_REFS".

   * Agrega la función "sys.getobjects()".

   * Agrega la variable de entorno "PYTHONDUMPREFS".

   Esta compilación no es ABI compatible con la compilación de
   lanzamiento (compilación predeterminada) o la compilación de
   depuración (macros "Py_DEBUG" y "Py_REF_DEBUG").

   Nuevo en la versión 3.8.

--with-assertions

   Compila con las aserciones de C habilitadas (el valor
   predeterminado es no): "assert(...);" y "_PyObject_ASSERT(...);".

   Si se establece, la macro "NDEBUG" no está definida en la variable
   del compilador "OPT".

   Consultar también la opción "--with-pydebug" (compilación de
   depuración) que también habilita las aserciones.

   Nuevo en la versión 3.6.

--with-valgrind

   Habilite la compatibilidad con Valgrind (el valor predeterminado es
   no).

--with-dtrace

   Habilite la compatibilidad con DTrace (el valor predeterminado es
   no).

   Consultar Instrumentación de CPython con DTrace y SystemTap.

   Nuevo en la versión 3.6.

--with-address-sanitizer

   Habilita el detector de errores de memoria AddressSanitizer, "asan"
   (el valor predeterminado es no).

   Nuevo en la versión 3.6.

--with-memory-sanitizer

   Habilita el detector de errores de asignación MemorySanitizer,
   "msan" (el valor predeterminado es no).

   Nuevo en la versión 3.6.

--with-undefined-behavior-sanitizer

   Habilita el detector de comportamiento indefinido
   UndefinedBehaviorSanitizer, "ubsan" (el valor predeterminado es
   no).

   Nuevo en la versión 3.6.


3.1.6. Opciones del enlazador
-----------------------------

--enable-shared

   Habilita la compilación de una biblioteca compartida de Python
   :"libpython" (el valor predeterminado es no).

--without-static-libpython

   No compila "libpythonMAJOR.MINOR.a" y no instala "python.o"
   (compilado y habilitado de forma predeterminada).

   Nuevo en la versión 3.10.


3.1.7. Opciones de bibliotecas
------------------------------

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

   Enlace con bibliotecas adicionales (el valor predeterminado es no).

--with-system-expat

   Compila el módulo "pyexpat" usando la biblioteca instalada "expat"
   instalada (por defecto es no).

--with-system-ffi

   Compila el módulo de extensión "_ctypes" usando la biblioteca
   instalada "ffi", consultar el módulo "ctypes" (el valor
   predeterminado es dependiente del sistema).

--with-system-libmpdec

   Compila el módulo de extensión "_decimal" usando la biblioteca
   instalada "mpdec", ver el módulo "decimal" (el valor predeterminado
   es no).

   Nuevo en la versión 3.3.

--with-readline=editline

   Utilice la biblioteca "editline" para el backend del módulo
   "readline".

   Define la macro "WITH_EDITLINE".

   Nuevo en la versión 3.10.

--without-readline

   No cree el módulo "readline" (es construido por defecto).

   No defina la macro "HAVE_LIBREADLINE".

   Nuevo en la versión 3.10.

--with-tcltk-includes='-I...'

   Sobreescribe la búsqueda de archivos incluidos de Tcl y Tk.

--with-tcltk-libs='-L...'

   Sobreescribe la búsqueda de bibliotecas Tcl y Tk.

--with-libm=STRING

   Sobreescribe la biblioteca matemática "libm" a *STRING* (el valor
   predeterminado es dependiente del sistema).

--with-libc=STRING

   Sobreescribe la biblioteca C "libc" a *STRING* (el valor
   predeterminado es dependiente del sistema).

--with-openssl=DIR

   Raíz del directorio OpenSSL.

   Nuevo en la versión 3.7.

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

   Configura el directorio de la biblioteca en tiempo de ejecución
   (rpath) para las bibliotecas OpenSSL:

   * "no" (por defecto): no establece rpath;

   * "auto": autodetecta rpath desde "--with-openssl" y "pkg-config";

   * *DIR*: establece un rpath explícito.

   Nuevo en la versión 3.10.


3.1.8. Opciones de seguridad
----------------------------

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

   Selecciona el algoritmo hash para usar en "Python/pyhash.c":

   * "siphash24" (por defecto).

   * "fnv";

   Nuevo en la versión 3.4.

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

   Módulos hash incorporados:

   * "md5";

   * "sha1";

   * "sha256";

   * "sha512";

   * "sha3" (con shake);

   * "blake2".

   Nuevo en la versión 3.9.

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

   Sobreescribe la cadena de conjuntos de cifrado predeterminada de
   OpenSSL:

   * "python" (por defecto): usa la selección principal de Python;

   * "openssl": deja intactos los valores predeterminados de OpenSSL;

   * *STRING*: usa una cadena de caracteres personalizada

   Consultar el módulo "ssl".

   Nuevo en la versión 3.7.

   Distinto en la versión 3.10: Las configuraciones "python" y
   *STRING* también establecen TLS 1.2 como versión mínima del
   protocolo.


3.1.9. Opciones macOS
---------------------

Ver "Mac/README.rst".

--enable-universalsdk

--enable-universalsdk=SDKDIR

   Crea una compilación binaria universal. *SDKDIR* especifica qué
   macOS SDK debe usarse para realizar la compilación (el valor
   predeterminado es no).

--enable-framework

--enable-framework=INSTALLDIR

   Crear un Python.framework en lugar de una instalación Unix
   tradicional. Opcionalmente *INSTALLDIR* especifica la ruta de
   instalación (el valor predeterminado es no).

--with-universal-archs=ARCH

   Especifique el tipo de binario universal que se debe crear. Esta
   opción solo es válida cuando se establece "--enable-universalsdk".

   Opciones:

   * "universal2";

   * "32-bit";

   * "64-bit";

   * "3-way";

   * "intel";

   * "intel-32";

   * "intel-64";

   * "all".

--with-framework-name=FRAMEWORK

   Especifica el nombre del framework de Python en macOS, solo es
   válido cuando "--enable-framework" está configurada (por defecto:
   "Python").


3.2. Sistema de compilación Python
==================================


3.2.1. Archivos principales del sistema de compilación
------------------------------------------------------

* "configure.ac" => "configure";

* "Makefile.pre.in" => "Makefile" (creado por "configure");

* "pyconfig.h" (creado por "configure");

* "Modules/Setup": Extensiones C creadas por Makefile usando el script
  de shell "Module/makesetup";

* "setup.py": extensiones C creadas con el módulo "distutils".


3.2.2. Pasos principales de compilación
---------------------------------------

* Los archivos C (".c") se crean como archivos objeto (".o").

* La biblioteca estática *libpython`* (".a") se crea a a partir de
  archivos de objetos.

* "python.o" y la biblioteca estática "libpython" están enlazadas al
  programa final "python".

* Las extensiones C son creadas por Makefile (ver "Midules/Setup") y
  "python setup.py build".


3.2.3. Objetivos principales de Makefile
----------------------------------------

* "make": Compilar Python con la biblioteca estándar.

* "make platform:": compila el programa "python", pero no construye
  los módulos de extensión de la biblioteca estándar.

* "make profile-opt": compila Python utilizando la optimización guiada
  por perfiles (PGO). Puede usar la opción de configuración "--enable-
  optimizations" para hacer que este sea el objetivo predeterminado
  del comando "make" ("make all" o simplemente "make").

* "make buildbottest": compila Python y ejecuta el conjunto de pruebas
  de Python, de la misma manera que los buildbots prueban Python.
  Configure la variable "TESTTIMEOUT" (en segundos) para cambiar el
  tiempo de espera de la prueba (1200 por defecto: 20 minutos).

* "make install": Compila e instala Python.

* "make regen-all": regenera (casi) todos los archivos generados;
  "make regen-stdlib-module-names" y "autoconf" deben ejecutarse por
  separado para los archivos generados restantes.

* "make clean": elimina los archivos compilados.

* "make distclean": Similar a "make clean", pero elimina también los
  archivos creados por el script de configuración.


3.2.4. Extensiones C
--------------------

Algunas extensiones de C están construidas como módulos incorporadas,
como el módulo "sys". Están compiladas con la macro definida
"Py_BUILD_CORE_BUILTIN". Los módulos incorporados no tienen el
atributo "__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__'

Otras extensiones de C se construyen como bibliotecas dinámicas, como
el módulo "_asyncio". Están compiladas con la macro definida
"Py_BUILD_CORE_MODULE". Ejemplo en 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" se usa para generar objetivos Makefile para compilar
extensiones C. Al principio de los archivos, las extensiones C se
crean como módulos incorporados. Las extensiones definidas después del
marcador "*shared*" se crean como bibliotecas dinámicas.

El script "setup.py" solo crea extensiones C como bibliotecas
compartidas usando el módulo "distutils".

Las macros "PyAPI_FUNC()", "PyAPI_API()" y "PyMODINIT_FUNC()" de
"Include/pyport.h" se definen de manera diferente dependiendo si es
definida la macro "Py_BUILD_CORE_MODULE":

* Use "Py_EXPORTED_SYMBOL" si "Py_BUILD_CORE_MODULE" es definido

* Use "Py_IMPORTED_SYMBOL" de lo contrario.

Si la macro "Py_BUILD_CORE_BUILTIN" se usa por error en una extensión
de C compilada como una biblioteca compartida, su función
"PyInit_xxx()" no se exporta, provocando un "ImportError" en la
importación.


3.3. Banderas de compilador y vinculación
=========================================

Opciones establecidas por el script "./configure" y las variables de
entorno y utilizadas por "Makefile".


3.3.1. Banderas del preprocesador
---------------------------------

CONFIGURE_CPPFLAGS

   Valor de la variable "CPPFLAGS" pasado al script "./configure".

   Nuevo en la versión 3.6.

CPPFLAGS

   (Objetivo) Indicadores del preprocesador C/C++, p. ej. "-I<include
   dir>" si tiene encabezados en un directorio no estándar "<include
   dir>".

   Ambos "CPPFLAGS" y "LDFLAGS" necesitan contener el valor del shell
   para setup.py para poder compilar módulos de extensión usando los
   directorios especificados en las variables de entorno.

BASECPPFLAGS

   Nuevo en la versión 3.4.

PY_CPPFLAGS

   Se agregaron indicadores de preprocesador adicionales para
   construir los archivos de objeto del intérprete.

   Por defecto: "$(BASECPPFLAGS) -I. -I$(srcdir)/Include
   $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)".

   Nuevo en la versión 3.2.


3.3.2. Banderas del compilador
------------------------------

CC

   Comando del compilador C.

   Ejemplo: "gcc -pthread".

MAINCC

   Comando del compilador de C usado para construir la función
   "main()" de programas como "python".

   Variable establecida por la opción "--with-cxx-main" del script de
   configuración.

   Por defecto: "$(CC)".

CXX

   Comando del compilador de C++.

   Se usa si se usa la opción "--with-cxx-main".

   Ejemplo: "g++ -pthread".

CFLAGS

   Banderas del compilador de C.

CFLAGS_NODIST

   "CFLAGS_NODIST" se usa para compilar el intérprete y las
   extensiones stdlib C. Úselo cuando una bandera del compilador *no*
   sea parte de distutils "CFLAGS" una vez que Python esté instalado
   (bpo-21121).

   In particular, "CFLAGS" should not contain:

   * the compiler flag "-I" (for setting the search path for include
     files). The "-I" flags are processed from left to right, and any
     flags in "CFLAGS" would take precedence over user- and package-
     supplied "-I" flags.

   * hardening flags such as "-Werror" because distributions cannot
     control whether packages installed by users conform to such
     heightened standards.

   Nuevo en la versión 3.5.

EXTRA_CFLAGS

   Banderas adicionales del compilador de C.

CONFIGURE_CFLAGS

   Valor de la variable "CFLAGS" pasada al script "./configure".

   Nuevo en la versión 3.2.

CONFIGURE_CFLAGS_NODIST

   Valor de la variable "CFLAGS_NODIST" pasada al script
   "./configure".

   Nuevo en la versión 3.5.

BASECFLAGS

   Banderas base del compilador.

OPT

   Banderas de optimización.

CFLAGS_ALIASING

   Banderas de alias estrictos o no estrictos que se utilizan para
   compilar "Python/dtoa.c".

   Nuevo en la versión 3.7.

CCSHARED

   Banderas del compilador que se utilizan para compilar una
   biblioteca compartida.

   Por ejemplo, "-fPIC" se usa en Linux y BSD.

CFLAGSFORSHARED

   Se agregaron banderas C adicionales para compilar los archivos de
   objeto del intérprete.

   Por defecto: "$(CCSHARED)" cuando se usa "--enable-shared", o una
   cadena de caracteres vacía en caso contrario.

PY_CFLAGS

   Por defecto: "$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS)
   $(EXTRA_CFLAGS)".

PY_CFLAGS_NODIST

   Por defecto: "$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST)
   -I$(srcdir)/Include/internal".

   Nuevo en la versión 3.5.

PY_STDMODULE_CFLAGS

   Banderas de C que se utilizan para compilar los archivos de objeto
   del intérprete.

   Por defecto: "$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS)
   $(CFLAGSFORSHARED)".

   Nuevo en la versión 3.7.

PY_CORE_CFLAGS

   Por defecto: "$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE".

   Nuevo en la versión 3.2.

PY_BUILTIN_MODULE_CFLAGS

   Banderas del compilador para construir un módulo de extensión de
   biblioteca estándar como un módulo incorporado, como el módulo
   "posix".

   Por defecto: "$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN".

   Nuevo en la versión 3.8.

PURIFY

   Comando Purify. Purify es un programa de depuración de memoria.

   Por defecto: cadena de caracteres vacía (no utilizado).


3.3.3. Banderas de vinculación
------------------------------

LINKCC

   Comando de vinculación usado para compilar programas como "python"
   y "_testembed".

   Por defecto: "$(PURIFY) $(MAINCC)".

CONFIGURE_LDFLAGS

   Valor de la variable "LDFLAGS" pasada al script "./configure".

   Evite asignar "CFLAGS", "LDFLAGS", etc. así los usuarios pueden
   usarlos en la línea de comando para agregar estos valores sin pisar
   los valores preestablecidos.

   Nuevo en la versión 3.2.

LDFLAGS_NODIST

   "LDFLAGS_NODIST" se usa de la misma manera que "CFLAGS_NODIST".
   Usar cuando una bandera del enlazador *no* sea parte de distutils
   "LDFLAGS" una vez que Python esté instalado (bpo-35257).

   In particular, "LDFLAGS" should not contain:

   * the compiler flag "-L" (for setting the search path for
     libraries). The "-L" flags are processed from left to right, and
     any flags in "LDFLAGS" would take precedence over user- and
     package-supplied "-L" flags.

CONFIGURE_LDFLAGS_NODIST

   Valor de la variable "LDFLAGS_NODIST" pasado al script
   "./configure".

   Nuevo en la versión 3.8.

LDFLAGS

   Banderas de vinculación, p. ej. "-L<lib dir>" si tiene bibliotecas
   en un directorio no estándar "<lib dir>".

   Ambos "CPPFLAGS" y "LDFLAGS" necesitan contener el valor del shell
   para setup.py para poder compilar módulos de extensión usando los
   directorios especificados en las variables de entorno.

LIBS

   Banderas de vinculación para pasar bibliotecas al vinculador al
   enlazar el ejecutable de Python.

   Ejemplo: "-lrt".

LDSHARED

   Comando para construir una biblioteca compartida.

   Por defecto: "@LDSHARED@ $(PY_LDFLAGS)".

BLDSHARED

   Comando para compilar la biblioteca compartida "libpython".

   Por defecto: "@BLDSHARED@ $(PY_CORE_LDFLAGS)".

PY_LDFLAGS

   Por defecto: "$(CONFIGURE_LDFLAGS) $(LDFLAGS)".

PY_LDFLAGS_NODIST

   Por defecto: "$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)".

   Nuevo en la versión 3.8.

PY_CORE_LDFLAGS

   Banderas de vinculación que se utilizan para crear los archivos de
   objeto del intérprete.

   Nuevo en la versión 3.8.
