3. 配置 Python¶
3.1. 构建要求¶
构建 CPython 所需的功能
一个 C11 编译器。 可选的 C11 功能 不是必需的。
支持 IEEE 754 浮点数和 浮点非数 (NaN)。
支持线程。
在 Windows 上,需要 Microsoft Visual Studio 2017 或更高版本。
在版本 3.5 中更改: 在 Windows 上,需要 Visual Studio 2015 或更高版本。
在版本 3.6 中更改: 现在需要选定的 C99 功能,例如 <stdint.h> 和 static inline 函数。
在版本 3.7 中更改: 现在需要线程支持和 OpenSSL 1.0.2。
在版本 3.10 中更改: 现在需要 OpenSSL 1.1.1。
在版本 3.11 中更改: 现在需要 C11 编译器、IEEE 754 和 NaN 支持。在 Windows 上,需要 Visual Studio 2017 或更高版本。
3.2. 生成的 文件¶
为了减少构建依赖关系,Python 源代码包含多个生成的 文件。用于重新生成所有生成的 文件的命令
make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure
Makefile.pre.in 文件记录了生成的 文件、它们的输入以及用于重新生成它们的工具。搜索 regen-* make 目标。
3.2.1. configure 脚本¶
make regen-configure 命令使用 Tools/build/regen-configure.sh shell 脚本重新生成 aclocal.m4 文件和 configure 脚本,该脚本使用 Ubuntu 容器来获取相同的工具版本并具有可重复的输出。
容器是可选的,以下命令可以在本地运行
autoreconf -ivf -Werror
生成的 文件可能会根据确切的 autoconf-archive、aclocal 和 pkg-config 版本而改变。
3.3. 配置选项¶
使用以下命令列出所有 ./configure 脚本选项
./configure --help
另请参阅 Python 源代码分发中的 Misc/SpecialBuilds.txt。
3.3.1. 通用选项¶
- --enable-loadable-sqlite-extensions¶
在
_sqlite扩展模块(默认情况下为否)中支持可加载扩展,该模块是sqlite3模块的一部分。请参阅
sqlite3.Connection.enable_load_extension()方法,该方法属于sqlite3模块。在 3.6 版本中添加。
- --enable-big-digits=[15|30]¶
定义 Python
int数字的位大小:15 位或 30 位。默认情况下,数字大小为 30 位。
将
PYLONG_BITS_IN_DIGIT定义为15或30。
- --with-suffix=SUFFIX¶
将 Python 可执行文件后缀设置为 SUFFIX。
默认后缀在 Windows 和 macOS 上为
.exe(python.exe可执行文件),在 Emscripten 节点上为.js,在 Emscripten 浏览器上为.html,在 WASI 上为.wasm,在其他平台上为空字符串(python可执行文件)。在 3.11 版本中更改: WASM 平台上的默认后缀为
.js、.html或.wasm之一。
- --with-tzpath=<list of absolute paths separated by pathsep>¶
为
zoneinfo.TZPATH选择默认时区搜索路径。请参阅 编译时配置,该配置属于zoneinfo模块。默认值:
/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo。请参阅
os.pathsep路径分隔符。在 3.9 版本中添加。
- --without-decimal-contextvar¶
使用线程局部上下文而不是协程局部上下文(默认情况下)构建
_decimal扩展模块,请参阅decimal模块。请参阅
decimal.HAVE_CONTEXTVAR和contextvars模块。在 3.9 版本中添加。
- --with-dbmliborder=<list of backend names>¶
覆盖检查
dbm模块的 db 后端的顺序有效值为以冒号 (
:) 分隔的字符串,包含后端名称ndbm;gdbm;bdb.
- --without-c-locale-coercion¶
禁用将 C 本地化强制转换为基于 UTF-8 的本地化(默认情况下启用)。
不定义
PY_COERCE_C_LOCALE宏。参见
PYTHONCOERCECLOCALE和 PEP 538。
- --without-freelists¶
禁用所有空闲列表,除了空元组单例。
在 3.11 版本中添加。
- --with-platlibdir=DIRNAME¶
Python 库目录名称(默认值为
lib)。Fedora 和 SuSE 在 64 位平台上使用
lib64。参见
sys.platlibdir。在 3.9 版本中添加。
- --with-wheel-pkg-dir=PATH¶
ensurepip模块使用的轮子包目录(默认情况下为无)。一些 Linux 发行版打包策略建议不要捆绑依赖项。例如,Fedora 将轮子包安装在
/usr/share/python-wheels/目录中,并且不安装ensurepip._bundled包。在 3.10 版本中添加。
- --with-pkg-config=[check|yes|no]¶
配置是否应该使用 pkg-config 来检测构建依赖项。
check(默认):pkg-config 是可选的yes:pkg-config 是必需的no:即使存在,配置也不会使用 pkg-config
在 3.11 版本中添加。
- --enable-pystats¶
打开内部统计信息收集。
统计信息将被转储到
/tmp/py_stats/中的任意(可能唯一)文件,或者在 Windows 上转储到C:\temp\py_stats\中。如果该目录不存在,结果将打印到标准输出。使用
Tools/scripts/summarize_stats.py来读取统计信息。在 3.11 版本中添加。
3.3.2. WebAssembly 选项¶
- --with-emscripten-target=[browser|node]¶
为
wasm32-emscripten设置构建风格。browser(默认): 预加载最小 stdlib,默认 MEMFS。node: NODERAWFS 和 pthread 支持。
在 3.11 版本中添加。
- --enable-wasm-dynamic-linking¶
开启 WASM 的动态链接支持。
动态链接启用
dlopen。由于有限的死代码消除和附加功能,可执行文件的大小会增加。在 3.11 版本中添加。
- --enable-wasm-pthreads¶
开启 WASM 的 pthreads 支持。
在 3.11 版本中添加。
3.3.3. 安装选项¶
- --prefix=PREFIX¶
在 PREFIX 中安装与架构无关的文件。在 Unix 上,它默认为
/usr/local。此值可以在运行时使用
sys.prefix获取。例如,可以使用
--prefix="$HOME/.local/"在其主目录中安装 Python。
- --exec-prefix=EPREFIX¶
在 EPREFIX 中安装与架构相关的文件,默认为
--prefix.此值可以在运行时使用
sys.exec_prefix获取。
3.3.4. 性能选项¶
建议使用 --enable-optimizations --with-lto (PGO + LTO) 配置 Python 以获得最佳性能。实验性的 --enable-bolt 标志也可以用来提高性能。
- --enable-optimizations¶
使用
PROFILE_TASK启用 Profile Guided Optimization (PGO)(默认情况下禁用)。C 编译器 Clang 需要
llvm-profdata程序才能使用 PGO。在 macOS 上,GCC 也需要它:GCC 在 macOS 上只是 Clang 的别名。如果使用
--enable-shared和 GCC,则还应禁用 libpython 中的语义插桩:将-fno-semantic-interposition添加到编译器和链接器标志中。注意
在构建过程中,您可能会遇到有关某些源文件不可用配置文件数据的编译器警告。这些警告是无害的,因为在配置文件数据采集期间只执行了代码的一部分。要在 Clang 上禁用这些警告,请手动抑制它们,方法是将
-Wno-profile-instr-unprofiled添加到CFLAGS。在 3.6 版本中添加。
在 3.10 版本中更改: 在 GCC 上使用
-fno-semantic-interposition。
- PROFILE_TASK¶
Makefile 中使用的环境变量:用于 PGO 生成任务的 Python 命令行参数。
默认值:
-m test --pgo --timeout=$(TESTTIMEOUT)。在 3.8 版本中添加。
- --with-lto=[full|thin|no|yes]¶
在任何构建中启用链接时优化 (LTO)(默认情况下禁用)。
C 编译器 Clang 需要
llvm-ar才能使用 LTO(macOS 上的ar),以及支持 LTO 的链接器(ld.gold或lld)。在 3.6 版本中添加。
在 3.11 版本中添加: 要在 Clang 上使用 ThinLTO 功能,请使用
--with-lto=thin。在 3.12 版本中更改: 如果编译器接受该标志,则在 Clang 上使用 ThinLTO 作为默认优化策略。
- --enable-bolt¶
启用使用 BOLT 链接后二进制优化器(默认情况下禁用)。
BOLT 是 LLVM 项目的一部分,但并不总是包含在他们的二进制发行版中。此标志要求
llvm-bolt和merge-fdata可用。BOLT 仍然是一个相当新的项目,因此此标志目前应被视为实验性的。由于此工具在机器代码上运行,因此其成功取决于构建环境 + 其他优化配置参数 + CPU 架构的组合,并非所有组合都受支持。LLVM 16 之前的 BOLT 版本已知在某些情况下会导致 BOLT 崩溃。强烈建议使用 LLVM 16 或更高版本进行 BOLT 优化。
BOLT_INSTRUMENT_FLAGS和BOLT_APPLY_FLAGSconfigure 变量可以定义为覆盖 llvm-bolt 的默认参数集,分别用于对二进制文件进行检测和应用 BOLT 数据。在 3.12 版本中添加。
- --with-computed-gotos¶
在评估循环中启用计算 goto(在支持的编译器上默认启用)。
- --without-pymalloc¶
禁用专门的 Python 内存分配器 pymalloc(默认启用)。
另请参阅
PYTHONMALLOC环境变量。
- --without-doc-strings¶
禁用静态文档字符串以减少内存占用(默认启用)。在 Python 中定义的文档字符串不受影响。
不要定义
WITH_DOC_STRINGS宏。请参阅
PyDoc_STRVAR()宏。
- --enable-profiling¶
使用
gprof启用 C 级代码分析(默认禁用)。
- --with-strict-overflow¶
将
-fstrict-overflow添加到 C 编译器标志(默认情况下,我们添加-fno-strict-overflow)。
3.3.5. Python 调试版本¶
调试版本是使用 --with-pydebug 配置选项构建的 Python。
调试版本的影响
默认情况下显示所有警告:
warnings模块中的默认警告过滤器列表为空。将
d添加到sys.abiflags。添加
sys.gettotalrefcount()函数。添加
-X showrefcount命令行选项。添加
-d命令行选项和PYTHONDEBUG环境变量以调试解析器。添加对
__lltrace__变量的支持:如果定义了该变量,则在字节码评估循环中启用低级跟踪。安装 内存分配器上的调试钩子 以检测缓冲区溢出和其他内存错误。
定义
Py_DEBUG和Py_REF_DEBUG宏。添加运行时检查:用
#ifdef Py_DEBUG和#endif包围的代码。启用assert(...)和_PyObject_ASSERT(...)断言:不要设置NDEBUG宏(另请参阅--with-assertions配置选项)。主要运行时检查添加对函数参数的健全性检查。
Unicode 和 int 对象使用其内存填充模式创建,以检测使用未初始化的对象。
确保不会在引发异常的情况下调用可以清除或替换当前异常的函数。
检查释放器函数是否不会更改当前异常。
垃圾收集器(
gc.collect()函数)对对象一致性进行一些基本检查。Py_SAFE_DOWNCAST()宏在将宽类型向下转换为窄类型时检查整数下溢和上溢。
另请参阅 Python 开发模式 和 --with-trace-refs 配置选项。
版本 3.8 中的变更: 发布版本和调试版本现在是 ABI 兼容的:定义 Py_DEBUG 宏不再意味着 Py_TRACE_REFS 宏(参见 --with-trace-refs 选项),这是唯一引入 ABI 不兼容性的原因。
3.3.6. 调试选项¶
- --with-pydebug¶
以调试模式构建 Python: 定义
Py_DEBUG宏(默认情况下禁用)。
- --with-trace-refs¶
启用跟踪引用以进行调试(默认情况下禁用)。
效果
定义
Py_TRACE_REFS宏。添加
sys.getobjects()函数。添加
PYTHONDUMPREFS环境变量。
此构建与发布构建(默认构建)或调试构建(
Py_DEBUG和Py_REF_DEBUG宏)不兼容。在 3.8 版本中添加。
- --with-assertions¶
启用 C 断言构建(默认情况下禁用):
assert(...);和_PyObject_ASSERT(...);。如果设置,则
NDEBUG宏不会在OPT编译器变量中定义。另请参见
--with-pydebug选项(调试构建),它也启用断言。在 3.6 版本中添加。
- --with-valgrind¶
启用 Valgrind 支持(默认情况下禁用)。
- --with-dtrace¶
启用 DTrace 支持(默认情况下禁用)。
参见 使用 DTrace 和 SystemTap 对 CPython 进行检测.
在 3.6 版本中添加。
- --with-address-sanitizer¶
启用 AddressSanitizer 内存错误检测器,
asan(默认情况下禁用)。在 3.6 版本中添加。
- --with-memory-sanitizer¶
启用 MemorySanitizer 内存分配错误检测器,
msan(默认情况下禁用)。在 3.6 版本中添加。
- --with-undefined-behavior-sanitizer¶
启用 UndefinedBehaviorSanitizer 未定义行为检测器,
ubsan(默认情况下禁用)。在 3.6 版本中添加。
3.3.7. 链接器选项¶
启用构建共享 Python 库:
libpython(默认情况下禁用)。
- --without-static-libpython¶
不要构建
libpythonMAJOR.MINOR.a也不要安装python.o(默认情况下构建并启用)。在 3.10 版本中添加。
3.3.8. 库选项¶
- --with-libs='lib1 ...'¶
链接到其他库(默认情况下不链接)。
- --with-system-expat¶
使用已安装的
expat库构建pyexpat模块(默认情况下不构建)。
- --with-libm=STRING¶
将
libm数学库覆盖到 STRING(默认情况下取决于系统)。
- --with-libc=STRING¶
将
libcC 库覆盖到 STRING(默认情况下取决于系统)。
- --with-openssl=DIR¶
OpenSSL 目录的根目录。
在 3.7 版本中添加。
- --with-openssl-rpath=[no|auto|DIR]¶
设置 OpenSSL 库的运行时库目录(rpath)
no(默认):不设置 rpath;auto:从--with-openssl和pkg-config自动检测 rpath;DIR:设置显式 rpath。
在 3.10 版本中添加。
3.3.9. 安全选项¶
- --with-hash-algorithm=[fnv|siphash13|siphash24]¶
选择在
Python/pyhash.c中使用的哈希算法siphash13(默认);siphash24;fnv.
在 3.4 版本中添加。
在 3.11 版本中添加:
siphash13已添加,它是新的默认值。
- --with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2¶
内置哈希模块
md5;sha1;sha256;sha512;sha3(使用 shake);blake2.
在 3.9 版本中添加。
3.3.10. macOS 选项¶
参见 Mac/README.rst。
- --enable-universalsdk¶
- --enable-universalsdk=SDKDIR¶
创建通用二进制构建。SDKDIR 指定用于执行构建的 macOS SDK(默认值为无)。
- --enable-framework¶
- --enable-framework=INSTALLDIR¶
创建 Python.framework 而不是传统的 Unix 安装。可选的 INSTALLDIR 指定安装路径(默认值为无)。
- --with-universal-archs=ARCH¶
指定要创建的通用二进制文件的类型。此选项仅在设置了
--enable-universalsdk时有效。选项
universal2;32 位;64 位;3 路;intel;intel-32;intel-64;all.
- --with-framework-name=FRAMEWORK¶
仅在 macOS 上指定 python 框架的名称,仅在设置了
--enable-framework时有效(默认值:Python)。
3.3.11. 交叉编译选项¶
交叉编译,也称为交叉构建,可用于为另一个 CPU 架构或平台构建 Python。交叉编译需要用于构建平台的 Python 解释器。构建 Python 的版本必须与交叉编译的主机 Python 的版本匹配。
- --build=BUILD¶
配置在 BUILD 上构建,通常由 config.guess 猜测。
- --host=HOST¶
交叉编译以构建在 HOST(目标平台)上运行的程序
- --with-build-python=path/to/python¶
用于交叉编译的构建
python二进制文件的路径在 3.11 版本中添加。
- CONFIG_SITE=file¶
指向包含配置覆盖的文件的环境变量。
示例 config.site 文件
# config.site-aarch64 ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no
交叉编译示例
CONFIG_SITE=config.site-aarch64 ../configure \
--build=x86_64-pc-linux-gnu \
--host=aarch64-unknown-linux-gnu \
--with-build-python=../x86_64/python
3.4. Python 构建系统¶
3.4.1. 构建系统的主要文件¶
configure.ac=>configure;Makefile.pre.in=>Makefile(由configure创建);pyconfig.h(由configure创建);Modules/Setup: 使用Module/makesetup脚本由 Makefile 构建的 C 扩展;
3.4.2. 主要构建步骤¶
C 文件 (
.c) 被构建为目标文件 (.o).一个静态的
libpython库 (.a) 由目标文件创建。python.o和静态的libpython库被链接到最终的python程序。C 扩展由 Makefile 构建(参见
Modules/Setup)。
3.4.3. 主要 Makefile 目标¶
make: 使用标准库构建 Python。make platform:: 构建python程序,但不构建标准库扩展模块。make profile-opt: 使用 Profile Guided Optimization (PGO) 构建 Python。您可以使用 configure--enable-optimizations选项将此设置为make命令的默认目标 (make all或仅make)。make buildbottest: 构建 Python 并运行 Python 测试套件,与 buildbots 测试 Python 的方式相同。设置TESTTIMEOUT变量(以秒为单位)以更改测试超时时间(默认值为 1200:20 分钟)。make install: 构建并安装 Python。make regen-all: 重新生成(几乎)所有生成的文件;make regen-stdlib-module-names和autoconf必须分别运行以生成剩余的生成文件。make clean: 删除构建的文件。make distclean: 与make clean相同,但还会删除 configure 脚本创建的文件。
3.4.4. C 扩展¶
一些 C 扩展被构建为内置模块,例如 sys 模块。它们是在定义了 Py_BUILD_CORE_BUILTIN 宏的情况下构建的。内置模块没有 __file__ 属性。
>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> sys.__file__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'sys' has no attribute '__file__'
其他 C 扩展被构建为动态库,例如 _asyncio 模块。它们是在定义了 Py_BUILD_CORE_MODULE 宏的情况下构建的。在 Linux x86-64 上的示例
>>> import _asyncio
>>> _asyncio
<module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>
>>> _asyncio.__file__
'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'
Modules/Setup 用于生成 Makefile 目标以构建 C 扩展。在文件开头,C 扩展被构建为内置模块。在 *shared* 标记之后定义的扩展被构建为动态库。
PyAPI_FUNC()、PyAPI_DATA() 和 PyMODINIT_FUNC 宏在 Include/exports.h 中的定义方式取决于是否定义了 Py_BUILD_CORE_MODULE 宏。
如果定义了
Py_BUILD_CORE_MODULE,请使用Py_EXPORTED_SYMBOL。否则,请使用
Py_IMPORTED_SYMBOL。
如果在构建为共享库的 C 扩展中错误地使用了 Py_BUILD_CORE_BUILTIN 宏,其 PyInit_xxx() 函数将不会导出,导致在导入时出现 ImportError 错误。
3.5. 编译器和链接器标志¶
由 ./configure 脚本和环境变量设置并由 Makefile 使用的选项。
3.5.1. 预处理器标志¶
- CPPFLAGS¶
(Objective) C/C++ 预处理器标志,例如,如果您的头文件位于非标准目录 include_dir 中,则为
-Iinclude_dir。
- BASECPPFLAGS¶
在 3.4 版本中添加。
- PY_CPPFLAGS¶
用于构建解释器目标文件的额外预处理器标志。
默认值:
$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)。在版本 3.2 中添加。
3.5.2. 编译器标志¶
- CC¶
C 编译器命令。
示例:
gcc -pthread。
- CXX¶
C++ 编译器命令。
示例:
g++ -pthread。
- CFLAGS¶
C 编译器标志。
- CFLAGS_NODIST¶
CFLAGS_NODIST用于构建解释器和 stdlib C 扩展。当编译器标志不应成为 Python 安装后CFLAGS的一部分时使用它 (gh-65320).特别是,
CFLAGS不应包含编译器标志
-I(用于设置包含文件搜索路径)。-I标志从左到右处理,CFLAGS中的任何标志都将优先于用户和包提供的-I标志。诸如
-Werror之类的硬化标志,因为发行版无法控制用户安装的包是否符合此类更高的标准。
在版本 3.5 中添加。
- COMPILEALL_OPTS¶
在
make install中构建 PYC 文件时传递给compileall命令行的选项。默认值:-j0。在 3.12 版本中添加。
- EXTRA_CFLAGS¶
额外的 C 编译器标志。
- CONFIGURE_CFLAGS_NODIST¶
传递给
./configure脚本的CFLAGS_NODIST变量的值。在版本 3.5 中添加。
- BASECFLAGS¶
基本编译器标志。
- OPT¶
优化标志。
- CFLAGS_ALIASING¶
用于编译
Python/dtoa.c的严格或非严格别名标志。在 3.7 版本中添加。
- CCSHARED¶
用于构建共享库的编译器标志。
例如,
-fPIC用于 Linux 和 BSD。
- CFLAGSFORSHARED¶
为构建解释器目标文件添加的额外 C 标志。
默认值:当使用
--enable-shared时为$(CCSHARED),否则为空字符串。
- PY_CFLAGS¶
默认值:
$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)。
- PY_CFLAGS_NODIST¶
默认值:
$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal。在版本 3.5 中添加。
- PY_STDMODULE_CFLAGS¶
用于构建解释器目标文件的 C 编译器标志。
默认值:
$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)。在 3.7 版本中添加。
- PY_CORE_CFLAGS¶
默认值:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE。在版本 3.2 中添加。
- PY_BUILTIN_MODULE_CFLAGS¶
编译器标志,用于将标准库扩展模块构建为内置模块,例如
posix模块。默认值:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN。在 3.8 版本中添加。
- PURIFY¶
Purify 命令。Purify 是一个内存调试程序。
默认值:空字符串(未使用)。
3.5.3. 链接器标志¶
- LINKCC¶
用于构建程序(如
python和_testembed)的链接器命令。默认值:
$(PURIFY) $(CC)。
- CONFIGURE_LDFLAGS¶
传递给
./configure脚本的LDFLAGS变量的值。避免分配
CFLAGS、LDFLAGS等,以便用户可以在命令行中使用它们来追加这些值,而不会覆盖预设的值。在版本 3.2 中添加。
- LDFLAGS_NODIST¶
LDFLAGS_NODIST的使用方法与CFLAGS_NODIST相同。当链接器标志不应该成为 Python 安装后LDFLAGS的一部分时使用它 (gh-65320).特别是,
LDFLAGS不应该包含编译器标志
-L(用于设置库的搜索路径)。-L标志从左到右处理,LDFLAGS中的任何标志都将优先于用户和包提供的-L标志。
- CONFIGURE_LDFLAGS_NODIST¶
传递给
./configure脚本的LDFLAGS_NODIST变量的值。在 3.8 版本中添加。
- LDFLAGS¶
链接器标志,例如
-Llib_dir(如果您在非标准目录 lib_dir 中有库)。
- 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 版本中添加。