3. 配置 Python?
3.1. 配置參數(shù)?
用以下方式列出腳本 ./configure
的所有參數(shù):
./configure --help
參閱 Python 源代碼中的 Misc/SpecialBuilds.txt
。
3.1.1. 常用參數(shù)?
- --enable-loadable-sqlite-extensions?
支持
_sqlite
擴(kuò)展模塊中的可加載擴(kuò)展(默認(rèn)為否)。參見
sqlite3.Connection.enable_load_extension()
方法的sqlite3
模塊。3.6 新版功能.
- --enable-big-digits=[15|30]?
定義 Python
int
數(shù)字的比特大小:15或30比特By default, the digit size is 30.
定義
PYLONG_BITS_IN_DIGIT
為15
或30
。
- --with-cxx-main?
- --with-cxx-main=COMPILER?
編譯 Python
main()
函數(shù),用 C++ 編譯器鏈接 Python 可執(zhí)行文件: $CXX` 或 COMPILER。
- --with-suffix=SUFFIX?
將 Python 的可執(zhí)行文件后綴設(shè)置為 SUFFIX。
The default suffix is
.exe
on Windows and macOS (python.exe
executable),.js
on Emscripten node,.html
on Emscripten browser,.wasm
on WASI, and an empty string on other platforms (python
executable).在 3.11 版更改: The default suffix on WASM platform is one of
.js
,.html
or.wasm
.
- --with-tzpath=<list of absolute paths separated by pathsep>?
為
zoneinfo.TZPATH
選擇默認(rèn)的時(shí)區(qū)搜索路徑。 參見zoneinfo
模塊的 編譯時(shí)配置。默認(rèn):
/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo
參閱
os.pathsep
路徑分隔符。3.9 新版功能.
- --without-decimal-contextvar?
編譯
_decimal
擴(kuò)展模塊時(shí)使用線程本地上下文,而不是協(xié)程本地上下文(默認(rèn)),參見decimal
模塊。參見
decimal.HAVE_CONTEXTVAR
和contextvars
模塊。3.9 新版功能.
- --with-dbmliborder=<list of backend names>?
覆蓋
dbm
模塊的 db 后端檢查順序。合法值是用冒號(hào)(
:
)分隔的字符串,包含后端名稱。ndbm
;gdbm
;bdb
。
- --without-c-locale-coercion?
禁用 C 語(yǔ)言對(duì) UTF-8 的強(qiáng)制要求(默認(rèn)為啟用)。
不定義
PY_COERCE_C_LOCALE
宏。參閱
PYTHONCOERCECLOCALE
和 PEP 538。
- --with-platlibdir=DIRNAME?
Python 庫(kù)目錄名(默認(rèn)為
lib
)。Fedora 和 SuSE 在64 位平臺(tái)用
lib64
。參閱
sys.platlibdir
。3.9 新版功能.
- --with-wheel-pkg-dir=PATH?
ensurepip
模塊用到的 wheel 包目錄(默認(rèn)為無(wú))。某些 Linux 發(fā)行版的打包策略建議不要捆綁依賴關(guān)系。如 Fedora 在``/usr/share/python-wheels/`` 目錄下安裝 wheel 包,而不安裝
ensurepip._bundled
包。3.10 新版功能.
- --with-pkg-config=[check|yes|no]?
Whether configure should use pkg-config to detect build dependencies.
check
(default): pkg-config is optionalyes
: pkg-config is mandatoryno
: configure does not use pkg-config even when present
3.11 新版功能.
- --enable-pystats?
Turn on internal statistics gathering.
The statistics will be dumped to a arbitrary (probably unique) file in
/tmp/py_stats/
, orC:\temp\py_stats\
on Windows.Use
Tools/scripts/summarize_stats.py
to read the stats.3.11 新版功能.
3.1.2. WebAssembly Options?
- --with-emscripten-target=[browser|node]?
Set build flavor for
wasm32-emscripten
.browser
(default): preload minimal stdlib, default MEMFS.node
: NODERAWFS and pthread support.
3.11 新版功能.
- --enable-wasm-dynamic-linking?
Turn on dynamic linking support for WASM.
Dynamic linking enables
dlopen
. File size of the executable increases due to limited dead code elimination and additional features.3.11 新版功能.
- --enable-wasm-pthreads?
Turn on pthreads support for WASM.
3.11 新版功能.
3.1.3. 安裝時(shí)的選項(xiàng)?
3.1.4. 性能選項(xiàng)?
建議用 --enable-optimizations --with-lto
(PGO + LTO)配置 Python,以便實(shí)現(xiàn)最佳性能。
- --enable-optimizations?
用
PROFILE_TASK
啟用以配置文件主導(dǎo)的優(yōu)化(PGO)(默認(rèn)為禁用)。C 編譯器 Clang 需要用到
llvm-profdata
程序進(jìn)行 PGO。在 macOS 上,GCC 也需要用到它:在 macOS 上 GCC 只是 Clang 的別名而已。如果使用
--enable-shared
和 GCC ,還可以禁用 libpython 中的語(yǔ)義插值:在編譯器和鏈接器的標(biāo)志中加入-fno-semantic-interposition
。3.6 新版功能.
在 3.10 版更改: 在 GCC 上使用
-fno-semantic-interposition
。
- PROFILE_TASK?
Makefile 用到的環(huán)境變量:PGO 用到的 Python 命令行參數(shù)。
默認(rèn)為:
-m test --pgo --timeout=$(TESTTIMEOUT)
。3.8 新版功能.
- --with-lto=[full|thin|no|yes]?
在編譯過(guò)程中啟用鏈接時(shí)間優(yōu)化(LTO)(默認(rèn)為禁用)。
LTO 時(shí) C 編譯器 Clang 需要用到
llvm-ar
參數(shù)(在 macOS 則為ar
),以及支持 LTO 的鏈接器(ld.gold
或lld
)。3.6 新版功能.
3.11 新版功能: To use ThinLTO feature, use
--with-lto=thin
on Clang.
- --with-computed-gotos?
在求值環(huán)節(jié)啟用 goto 計(jì)數(shù)(在支持的編譯器上默認(rèn)啟用)。
- --without-pymalloc?
禁用特定的 Python 內(nèi)存分配器 pymalloc (默認(rèn)為啟用)。
參見環(huán)境變量
PYTHONMALLOC
。
- --without-doc-strings?
禁用靜態(tài)文檔字符串以減少內(nèi)存占用(默認(rèn)啟用)。Python 中定義的文檔字符串不受影響。
不定義
PY_COERCE_C_LOCALE
宏。參閱宏
PyDoc_STRVAR()
。
- --enable-profiling?
用
gprof
啟用 C 語(yǔ)言級(jí)的代碼評(píng)估(默認(rèn)為禁用)。
3.1.5. Python 調(diào)試級(jí)編譯?
調(diào)試版本 Python 是指帶有 --with-pydebug
參數(shù)的編譯。
調(diào)試版本的效果:
默認(rèn)顯示所有警告:在
warnings
模塊中,默認(rèn)警告過(guò)濾器的列表是空的。在
sys.abiflags
中加入d
標(biāo)記。加入
sys.gettotalrefcount()
函數(shù)。命令行參數(shù)加入
-X showrefcount
。Add
-d
command line option andPYTHONDEBUG
environment variable to debug the parser.Add support for the
__lltrace__
variable: enable low-level tracing in the bytecode evaluation loop if the variable is defined.安裝 內(nèi)存分配調(diào)試鉤子 ,以便檢測(cè)緩沖區(qū)溢出和其他內(nèi)存錯(cuò)誤。
定義宏
Py_DEBUG
和Py_REF_DEBUG
。Add runtime checks: code surrounded by
#ifdef Py_DEBUG
and#endif
. Enableassert(...)
and_PyObject_ASSERT(...)
assertions: don't set theNDEBUG
macro (see also the--with-assertions
configure option). Main runtime checks:增加了對(duì)函數(shù)參數(shù)的合理性檢查。
創(chuàng)建 Unicode 和 int 對(duì)象時(shí),內(nèi)存按某種模式進(jìn)行了填充,用于檢測(cè)是否使用了未初始化的對(duì)象。
確保有能力清除或替換當(dāng)前異常的函數(shù)在調(diào)用時(shí)不會(huì)引發(fā)異常。
Check that deallocator functions don't change the current exception.
垃圾收集器(
gc.collect()
函數(shù))對(duì)對(duì)象的一致性進(jìn)行一些基本檢查。從較寬類型轉(zhuǎn)換到較窄類型時(shí),
Py_SAFE_DOWNCAST()
宏會(huì)檢查整數(shù)下溢和上溢的情況。
參見 Python 開發(fā)模式 和配置參數(shù) --with-trace-refs
。
在 3.8 版更改: 發(fā)布版和調(diào)試版的編譯現(xiàn)在是 ABI 兼容的:定義了 Py_DEBUG
宏不再意味著同時(shí)定義了 Py_TRACE_REFS
宏(參見 --with-trace-refs
參數(shù)),這引入了唯一一處不是 ABI 兼容的地方。
3.1.6. 調(diào)試選項(xiàng)?
- --with-pydebug?
在調(diào)試模式下編譯 Python: 定義宏
Py_DEBUG
(默認(rèn)為禁用)。
- --with-trace-refs?
為了調(diào)試而啟用引用的跟蹤(默認(rèn)為禁用)。
效果如下:
定義
Py_TRACE_REFS
宏。加入
sys.getobjects()
函數(shù)。環(huán)境變量加入
PYTHONDUMPREFS
。
此版本與發(fā)布模式(默認(rèn)編譯模式)或調(diào)試模式(
Py_DEBUG
和Py_REF_DEBUG
宏)不具備 ABI 兼容性。3.8 新版功能.
- --with-assertions?
編譯時(shí)啟用 C 斷言:
assert(...);
和_PyObject_ASSERT(...);
(默認(rèn)不啟用)。如果設(shè)置此參數(shù),則在
OPT
編譯器變量中不定義NDEBUG
宏。參閱
--with-pydebug
選項(xiàng)(調(diào)試編譯模式),它也可以啟用斷言。3.6 新版功能.
- --with-valgrind?
啟用 Valgrind (默認(rèn)禁用)。
- --with-dtrace?
啟用 DTrace(默認(rèn)禁用)。
參閱 用 DTrace 和 SystemTap 測(cè)試 CPython。
3.6 新版功能.
- --with-address-sanitizer?
啟用 AddressSanitizer 內(nèi)存錯(cuò)誤檢測(cè)
asan
,(默認(rèn)為禁用)。3.6 新版功能.
- --with-memory-sanitizer?
啟用 MemorySanitizer 內(nèi)存錯(cuò)誤檢測(cè)
msan
,(默認(rèn)為禁用)。3.6 新版功能.
- --with-undefined-behavior-sanitizer?
啟用 undefinedBehaviorSanitizer 未定義行為檢測(cè)
ubsan
,(默認(rèn)為禁用)。3.6 新版功能.
3.1.7. 鏈接器選項(xiàng)?
啟用共享 Python 庫(kù)
libpython
的編譯(默認(rèn)為禁用)。
- --without-static-libpython?
不編譯
libpythonMAJOR.MINOR.a
,也不安裝python.o
(默認(rèn)會(huì)編譯并安裝)。3.10 新版功能.
3.1.8. 庫(kù)選項(xiàng)?
- --with-libs='lib1 ...'?
鏈接附加庫(kù)(默認(rèn)不會(huì))。
- --with-system-expat?
用已安裝的
expat
庫(kù)編譯pyexpat
模塊(默認(rèn)為否)。
- --with-libm=STRING?
將
libm
數(shù)學(xué)庫(kù)覆蓋為 STRING (默認(rèn)情況視系統(tǒng)而定)。
- --with-libc=STRING?
將
libc
C 庫(kù)覆蓋為 STRING (默認(rèn)情況視系統(tǒng)而定)。
- --with-openssl=DIR?
OpenSSL 的根目錄。
3.7 新版功能.
- --with-openssl-rpath=[no|auto|DIR]?
設(shè)置 OpenSSL 庫(kù)的運(yùn)行時(shí)庫(kù)目錄(rpath)。
no
(默認(rèn)): 不設(shè)置 rpath。auto
:根據(jù)--with-openssl
和pkg-config
自動(dòng)檢測(cè) rpath。DIR :直接設(shè)置 rpath。
3.10 新版功能.
3.1.9. 安全性選項(xiàng)?
- --with-hash-algorithm=[fnv|siphash13|siphash24]?
選擇
Python/pyhash.c
采用的哈希算法。siphash13
(default);siphash24
;fnv
.
3.4 新版功能.
3.11 新版功能:
siphash13
is added and it is the new default.
- --with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2?
內(nèi)置哈希模塊:
md5
。sha1
。sha256
。sha512
。sha3
(帶 shake)。blake2
。
3.9 新版功能.
3.1.10. macOS 選項(xiàng)?
參見 Mac/README.rst
。
- --enable-universalsdk?
- --enable-universalsdk=SDKDIR?
創(chuàng)建通用的二進(jìn)制版本。SDKDIR 指定應(yīng)采用的 macOS SDK (默認(rèn)為否)。
- --enable-framework?
- --enable-framework=INSTALLDIR?
創(chuàng)建 Python.framework ,而不是傳統(tǒng)的 Unix 安裝版??蛇x參數(shù) INSTALLDIR 指定了安裝路徑((默認(rèn)為否)。
- --with-universal-archs=ARCH?
指定應(yīng)創(chuàng)建何種通用二進(jìn)制文件。該選項(xiàng)僅當(dāng)設(shè)置了
--enable-universalsdk
時(shí)才有效。可選項(xiàng):
universal2
。32-bit
。64-bit
。3-way
。intel
。intel-32
。intel-64
。all
。
- --with-framework-name=FRAMEWORK?
為 macOS 中的 python 框架指定名稱,僅當(dāng)設(shè)置了
--enable-framework
時(shí)有效(默認(rèn):Python
)。
3.1.11. Cross Compiling Options?
Cross compiling, also known as cross building, can be used to build Python for another CPU architecture or platform. Cross compiling requires a Python interpreter for the build platform. The version of the build Python must match the version of the cross compiled host Python.
- --build=BUILD?
configure for building on BUILD, usually guessed by config.guess.
- --host=HOST?
cross-compile to build programs to run on HOST (target platform)
- --with-build-python=path/to/python?
path to build
python
binary for cross compiling3.11 新版功能.
- CONFIG_SITE=file?
An environment variable that points to a file with configure overrides.
Example config.site file:
# config.site-aarch64 ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no
Cross compiling example:
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 構(gòu)建系統(tǒng)?
3.2.1. 構(gòu)建系統(tǒng)的主要文件?
configure.ac
=>configure
;Makefile.pre.in
=>Makefile
(由configure
創(chuàng)建);pyconfig.h
(由configure
創(chuàng)建);Modules/Setup
: 由Makefile 使用Module/makesetup
shell 腳本構(gòu)建的 C 擴(kuò)展;setup.py
: 使用distutils
模塊構(gòu)建的 C 擴(kuò)展。
3.2.2. 主要構(gòu)建步驟?
C文件(
.c
)是作為對(duì)象文件(.o
)構(gòu)建的。一個(gè)靜態(tài)庫(kù)
libpython
(.a
)是由對(duì)象文件創(chuàng)建的。python.o
和靜態(tài)庫(kù)libpython
被鏈接到最終程序python
中。C 擴(kuò)展由 Makefile (參見
Modules/Setup
) 和python setup.py build
構(gòu)建。
3.2.3. 主要 Makefile 目標(biāo)?
make
:用標(biāo)準(zhǔn)庫(kù)構(gòu)建Python。make platform:
:構(gòu)建python
程序,但不構(gòu)建標(biāo)準(zhǔn)庫(kù)擴(kuò)展模塊。make profile-opt
:使用 Profile Guided Optimization (PGO) 構(gòu)建 Python 。你可以使用 configure 的--enable-optimizations
選項(xiàng)來(lái)使其成為make
命令的默認(rèn)目標(biāo)(make all
或只是make
)。make buildbottest
:構(gòu)建 Python 并運(yùn)行 Python 測(cè)試套件,與 buildbots 測(cè)試 Python 的方式相同。設(shè)置變量TESTTIMEOUT
(單位:秒)來(lái)改變測(cè)試超時(shí)時(shí)間(默認(rèn)為 1200 即 20 分鐘)。make install
:構(gòu)建并安裝 Python 。make regen-all
:重新生成(幾乎)所有生成的文件;make regen-stdlib-module-names
和autoconf
必須對(duì)其余生成的文件單獨(dú)運(yùn)行。make clean
:移除構(gòu)建的文件。make distclean
:與make clean
相同,但也刪除由配置腳本創(chuàng)建的文件。
3.2.4. C 擴(kuò)展?
一些 C 擴(kuò)展是作為內(nèi)置模塊構(gòu)建的,比如模塊 sys
。它們是在定義了宏 Py_BUILD_CORE_BUILTIN
的情況下構(gòu)建的。內(nèi)置模塊沒(méi)有 __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__'
Other C extensions are built as dynamic libraries, like the _asyncio
module.
They are built with the Py_BUILD_CORE_MODULE
macro defined.
Example on 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 目標(biāo),以構(gòu)建 C 擴(kuò)展。在文件的開頭, C 被構(gòu)建為內(nèi)置模塊。在標(biāo)記 *shared*
之后定義的擴(kuò)展被構(gòu)建為動(dòng)態(tài)庫(kù)。
setup.py
腳本只使用 distutils
模塊將 C 構(gòu)建為共享庫(kù)。
宏 PyAPI_FUNC()
, PyAPI_API()
和 PyMODINIT_FUNC()
在 Include/pyport.h
中的定義不同,取決于是否定義宏 Py_BUILD_CORE_MODULE
。
如果
Py_BUILD_CORE_MODULE
定義了,使用Py_EXPORTED_SYMBOL
。否則使用
Py_IMPORTED_SYMBOL
。
如果宏 Py_BUILD_CORE_BUILTIN
被錯(cuò)誤地用在作為共享庫(kù)構(gòu)建的 C 擴(kuò)展上,它的函數(shù) PyInit_xxx()
就不會(huì)被導(dǎo)出,導(dǎo)致導(dǎo)入時(shí)出現(xiàn) ImportError
。
3.3. 編譯器和鏈接器的標(biāo)志?
腳本 ./configure
和環(huán)境變量設(shè)置的選項(xiàng),并被 Makefile
使用。
3.3.1. 預(yù)處理器的標(biāo)志?
- CPPFLAGS?
( Objective ) C/C++ 預(yù)處理器標(biāo)志,例如,使用
-I<include dir>
如果你的頭文件在一個(gè)非標(biāo)準(zhǔn)的目錄<include dir>
中 、CPPFLAGS
和LDFLAGS
都需要包含shell的值,以便 setup.py 能夠使用環(huán)境變量中指定的目錄構(gòu)建擴(kuò)展模塊。
- BASECPPFLAGS?
3.4 新版功能.
- PY_CPPFLAGS?
為構(gòu)建解釋器對(duì)象文件增加了額外的預(yù)處理器標(biāo)志。
默認(rèn)為:
$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
。3.2 新版功能.
3.3.2. 編譯器標(biāo)志?
- CC?
C 編譯器指令。
例如:
gcc -pthread
。
- MAINCC?
C編譯器命令用于構(gòu)建像
python
這樣的程序的main()
函數(shù)。由配置腳本的
--with-cxx-main
選項(xiàng)設(shè)置的變量。默認(rèn)為:
$(CC)
。
- CXX?
C++ 編譯器指令。
如果使用了
--with-cxx-main
選項(xiàng),則使用。例如:
g++ -pthread
。
- CFLAGS?
C 編譯器標(biāo)志。
- CFLAGS_NODIST?
CFLAGS_NODIST
用于構(gòu)建解釋器和 stdlib C 擴(kuò)展。當(dāng) Python 安裝后,編譯器標(biāo)志 不 應(yīng)該成為 distutilsCFLAGS
的一部分時(shí),可以使用它 ( bpo-21121 )。3.5 新版功能.
- EXTRA_CFLAGS?
而外的 C 編譯器指令。
- CONFIGURE_CFLAGS_NODIST?
變量
CFLAGS_NODIST
的值傳遞給./configure
腳本。3.5 新版功能.
- BASECFLAGS?
基礎(chǔ)編譯器標(biāo)志。
- OPT?
優(yōu)化標(biāo)志。
- CFLAGS_ALIASING?
嚴(yán)格或不嚴(yán)格的別名標(biāo)志,用于編譯
Python/dtoa.c
、3.7 新版功能.
- CCSHARED?
用于構(gòu)建共享庫(kù)的編譯器標(biāo)志。
例如,
-fPIC
在 Linux 和 BSD 上使用。
- CFLAGSFORSHARED?
為構(gòu)建解釋器對(duì)象文件增加了額外的 C 標(biāo)志。
,默認(rèn)為:
$(CCSHARED)
,當(dāng)--enable-shared
被使用時(shí),則為空字符串
- PY_CFLAGS?
默認(rèn)為:
$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
。
- PY_CFLAGS_NODIST?
默認(rèn)為:
$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal
。3.5 新版功能.
- PY_STDMODULE_CFLAGS?
用于構(gòu)建解釋器對(duì)象文件的 C 標(biāo)志。
默認(rèn)為:
$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
。3.7 新版功能.
- PY_CORE_CFLAGS?
默認(rèn)為
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
。3.2 新版功能.
- PY_BUILTIN_MODULE_CFLAGS?
編譯器標(biāo)志,將標(biāo)準(zhǔn)庫(kù)的擴(kuò)展模塊作為內(nèi)置模塊來(lái)構(gòu)建,如
posix
模塊默認(rèn)為:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
。3.8 新版功能.
- PURIFY?
Purify 命令。 Purify 是一個(gè)內(nèi)存調(diào)試程序。
默認(rèn)為:空字符串(不使用)。
3.3.3. 鏈接器標(biāo)志位?
- LINKCC?
用于構(gòu)建如
python
和_testembed
的程序的鏈接器命令。默認(rèn)為:
$(PURIFY) $(MAINCC)
。
- CONFIGURE_LDFLAGS?
變量
LDFLAGS
的值被傳遞給./configure
腳本。避免指定
CFLAGS
,LDFLAGS
等,這樣用戶就可以在命令行上使用它們來(lái)追加這些值,而不用觸碰到預(yù)設(shè)的值。3.2 新版功能.
- LDFLAGS_NODIST?
LDFLAGS_NODIST
的使用方式與CFLAGS_NODIST
相同。當(dāng) Python 安裝后,鏈接器標(biāo)志 不 應(yīng)該成為 distutilsLDFLAGS
的一部分時(shí),可以使用它( bpo-35257 )。
- CONFIGURE_LDFLAGS_NODIST?
變量
LDFLAGS_NODIST
的值傳遞給./configure
腳本。3.8 新版功能.
- LDFLAGS?
鏈接器標(biāo)志,例如,如果你的庫(kù)在一個(gè)非標(biāo)準(zhǔn)的目錄
<lib dir>
中,則使用-L<lib dir>
。CPPFLAGS
和LDFLAGS
都需要包含shell的值,以便 setup.py 能夠使用環(huán)境變量中指定的目錄構(gòu)建擴(kuò)展模塊。
- LIBS?
鏈接器標(biāo)志,在鏈接 Python 可執(zhí)行文件時(shí)將庫(kù)傳遞給鏈接器。
例如:
-lrt
。
- LDSHARED?
構(gòu)建一個(gè)共享庫(kù)的命令。
默認(rèn)為:
@LDSHARED@ $(PY_LDFLAGS)
。
- BLDSHARED?
構(gòu)建共享庫(kù)
libpython
的命令。默認(rèn)為:
@BLDSHARED@ $(PY_CORE_LDFLAGS)
。
- PY_LDFLAGS?
默認(rèn)為:
$(CONFIGURE_LDFLAGS) $(LDFLAGS)
。
- PY_LDFLAGS_NODIST?
默認(rèn)為:
$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
。3.8 新版功能.
- PY_CORE_LDFLAGS?
用于構(gòu)建解釋器對(duì)象文件的鏈接器標(biāo)志。
3.8 新版功能.