3. Định cấu hình Python¶
3.1. Yêu cầu xây dựng¶
Để xây dựng CPython, bạn sẽ cần:
Trình biên dịch C11. Optional C11 features là không cần thiết.
Trên Windows, cần có Microsoft Visual Studio 2017 trở lên.
Hỗ trợ số dấu phẩy động IEEE 754 và floating-point Not-a-Number (NaN).
Hỗ trợ cho chủ đề.
Thay đổi trong phiên bản 3.5: Trên Windows, hiện cần có Visual Studio 2015 trở lên.
Thay đổi trong phiên bản 3.6: Các tính năng C99 đã chọn, như chức năng <stdint.h> và static inline, hiện được yêu cầu.
Thay đổi trong phiên bản 3.7: Hỗ trợ chủ đề bây giờ là cần thiết.
Thay đổi trong phiên bản 3.11: Trình biên dịch C11, IEEE 754 và hỗ trợ NaN hiện được yêu cầu. Trên Windows, cần có Visual Studio 2017 trở lên.
Xem thêm PEP 7 "Hướng dẫn về phong cách cho mã C" và PEP 11 "hỗ trợ nền tảng CPython".
3.1.1. Yêu cầu đối với các mô-đun tùy chọn¶
Một số optional modules của thư viện tiêu chuẩn yêu cầu cài đặt thư viện của bên thứ ba để phát triển (ví dụ: phải có sẵn tệp tiêu đề).
Các yêu cầu còn thiếu được báo cáo trong đầu ra configure. Các mô-đun bị thiếu do thiếu phụ thuộc được liệt kê ở gần cuối đầu ra make, đôi khi sử dụng tên nội bộ, ví dụ: _ctypes cho mô-đun ctypes.
Nếu bạn phân phối trình thông dịch CPython mà không có mô-đun tùy chọn, cách tốt nhất là khuyên người dùng, những người thường mong đợi rằng các mô-đun thư viện tiêu chuẩn có sẵn.
Các phụ thuộc để xây dựng các mô-đun tùy chọn là:
phụ thuộc |
Phiên bản tối thiểu |
Mô-đun Python |
|---|---|---|
Khuyến nghị 3.3.0 |
||
2.5.0 |
||
libreadline hoặc libedit [2] |
||
|
||
3.0.18 được đề xuất
(tối thiểu 1.1.1)
|
||
3.15.2 |
||
8.5.12 |
||
1.2.2.1 |
||
1.4.5 |
Lưu ý rằng bảng không bao gồm tất cả các mô-đun tùy chọn; đặc biệt, các mô-đun dành riêng cho nền tảng như winreg không được liệt kê ở đây.
Xem thêm
Zz000zz bao gồm danh sách đầy đủ các phần phụ thuộc cần thiết để xây dựng tất cả các mô-đun và hướng dẫn về cách cài đặt chúng trên các nền tảng phổ biến.
--with-system-expatcho phép xây dựng với thư viện libexpat bên ngoài.
Thay đổi trong phiên bản 3.1: Hiện tại, phiên bản Tcl/Tk 8.3.1 được yêu cầu cho tkinter.
Thay đổi trong phiên bản 3.5: Tcl/Tk phiên bản 8.4 hiện được yêu cầu cho tkinter.
Thay đổi trong phiên bản 3.10: OpenSSL 1.1.1 hiện được yêu cầu cho hashlib và ssl. SQLite 3.7.15 hiện được yêu cầu cho sqlite3.
Thay đổi trong phiên bản 3.11: Hiện tại, phiên bản Tcl/Tk 8.5.12 được yêu cầu cho tkinter.
Thay đổi trong phiên bản 3.13: SQLite 3.15.2 hiện được yêu cầu cho sqlite3.
3.2. Tệp đã tạo¶
Để giảm sự phụ thuộc của bản dựng, mã nguồn Python chứa nhiều tệp được tạo. Các lệnh để tạo lại tất cả các tệp được tạo:
làm regen-tất cả
tạo tên regen-stdlib-module
tạo regen-limit-abi
tạo cấu hình regen
Tệp Makefile.pre.in ghi lại các tệp đã tạo, đầu vào của chúng và các công cụ được sử dụng để tạo lại chúng. Tìm kiếm regen-* làm mục tiêu.
3.2.1. cấu hình tập lệnh¶
Lệnh make regen-configure tạo lại tệp aclocal.m4 và tập lệnh configure bằng cách sử dụng tập lệnh shell Tools/build/regen-configure.sh sử dụng bộ chứa Ubuntu để có các phiên bản công cụ tương tự và có đầu ra có thể lặp lại.
Vùng chứa là tùy chọn, lệnh sau có thể được chạy cục bộ
autoreconf -ivf -Werror
Các tệp được tạo có thể thay đổi tùy thuộc vào phiên bản chính xác của công cụ được sử dụng. Vùng chứa mà CPython sử dụng có Autoconf 2.72, aclocal từ Automake 1.16.5 và pkg-config 1.8.1.
Thay đổi trong phiên bản 3.13: Autoconf 2.71 và aclocal 1.16.5 và hiện được sử dụng để tạo lại configure.
Thay đổi trong phiên bản 3.14: Autoconf 2.72 hiện được sử dụng để tạo lại configure.
3.3. Tùy chọn cấu hình¶
Liệt kê tất cả các tùy chọn tập lệnh configure bằng cách sử dụng
./configure --help
Xem thêm Misc/SpecialBuilds.txt trong bản phân phối nguồn Python.
3.3.1. Tùy chọn chung¶
- --enable-loadable-sqlite-extensions¶
Hỗ trợ các tiện ích mở rộng có thể tải trong mô-đun mở rộng
_sqlite(mặc định là không) của mô-đunsqlite3.Xem phương pháp
sqlite3.Connection.enable_load_extension()của mô-đunsqlite3.Added in version 3.6.
- --enable-big-digits=[15|30]¶
Xác định kích thước theo bit của chữ số Python
int: 15 hoặc 30 bit.Theo mặc định, kích thước chữ số là 30.
Xác định
PYLONG_BITS_IN_DIGITthành15hoặc30.
- --with-suffix=SUFFIX¶
Đặt hậu tố thực thi Python thành SUFFIX.
Hậu tố mặc định là
.exetrên Windows và macOS (python.execó thể thực thi),.jstrên nút Emscripten,.htmltrên trình duyệt Emscripten,.wasmtrên WASI và một chuỗi trống trên các nền tảng khác (có thể thực thipython).Thay đổi trong phiên bản 3.11: Hậu tố mặc định trên nền tảng WASM là một trong các
.js,.htmlhoặc.wasm.
- --with-tzpath=<list of absolute paths separated by pathsep>¶
Chọn đường dẫn tìm kiếm múi giờ mặc định cho
zoneinfo.TZPATH. Xem Compile-time configuration của mô-đunzoneinfo.Mặc định:
/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo.Xem dấu phân cách đường dẫn
os.pathsep.Added in version 3.9.
- --without-decimal-contextvar¶
Xây dựng mô-đun mở rộng
_decimalbằng cách sử dụng ngữ cảnh luồng cục bộ thay vì ngữ cảnh cục bộ coroutine (mặc định), xem mô-đundecimal.Xem
decimal.HAVE_CONTEXTVARvà mô-đuncontextvars.Added in version 3.9.
- --with-dbmliborder=<list of backend names>¶
Thứ tự ghi đè để kiểm tra phần phụ trợ db cho mô-đun
dbmGiá trị hợp lệ là chuỗi được phân tách bằng dấu hai chấm (
:) với tên phụ trợ:ndbm;gdbm;bdb.
- --without-c-locale-coercion¶
Tắt tính năng ép buộc ngôn ngữ C thành ngôn ngữ dựa trên UTF-8 (được bật theo mặc định).
Không xác định macro
PY_COERCE_C_LOCALE.Xem
PYTHONCOERCECLOCALEvà PEP 538.
- --with-platlibdir=DIRNAME¶
Tên thư mục thư viện Python (mặc định là
lib).Fedora và SuSE sử dụng
lib64trên nền tảng 64-bit.Xem
sys.platlibdir.Added in version 3.9.
- --with-wheel-pkg-dir=PATH¶
Danh mục các gói bánh xe được mô-đun
ensurepipsử dụng (không có theo mặc định).Một số chính sách đóng gói phân phối Linux khuyến nghị không nên đóng gói phụ thuộc. Ví dụ: Fedora cài đặt các gói bánh xe trong thư mục
/usr/share/python-wheels/và không cài đặt góiensurepip._bundled.Added in version 3.10.
- --with-pkg-config=[check|yes|no]¶
Liệu cấu hình có nên sử dụng pkg-config để phát hiện các phần phụ thuộc của bản dựng hay không.
check(mặc định): pkg-config là tùy chọnyes: pkg-config là bắt buộcno: cấu hình không sử dụng pkg-config ngay cả khi có mặt
Added in version 3.11.
- --enable-pystats¶
Bật thu thập thống kê hiệu suất Python nội bộ.
Theo mặc định, tính năng thu thập số liệu thống kê bị tắt. Sử dụng lệnh
python3 -X pystatshoặc đặt biến môi trườngPYTHONSTATS=1để bật thu thập số liệu thống kê khi khởi động Python.Khi thoát Python, kết xuất số liệu thống kê nếu việc thu thập số liệu thống kê được bật và không bị xóa.
Hiệu ứng:
Thêm tùy chọn dòng lệnh
-X pystats.Thêm biến môi trường
PYTHONSTATS.Xác định macro
Py_STATS.Thêm chức năng vào mô-đun
sys:sys._stats_on(): Bật thu thập số liệu thống kê.sys._stats_off(): Tắt thu thập số liệu thống kê.sys._stats_clear(): Xóa số liệu thống kê.sys._stats_dump(): Kết xuất số liệu thống kê vào tệp và xóa số liệu thống kê.
Số liệu thống kê sẽ được chuyển sang một tệp tùy ý (có thể là duy nhất) trong
/tmp/py_stats/(Unix) hoặcC:\temp\py_stats\(Windows). Nếu thư mục đó không tồn tại thì kết quả sẽ được in ra stderr.Sử dụng
Tools/scripts/summarize_stats.pyđể đọc số liệu thống kê.Thống kê:
Mã lệnh:
Chuyên môn: thành công, thất bại, trúng, trì hoãn, trượt, thất bại, thất bại;
Số lần thực hiện;
Số lượng cặp.
Gọi:
Các cuộc gọi Python nội tuyến;
cuộc gọi PyEval;
Khung đẩy;
Đối tượng khung được tạo;
Cuộc gọi đánh giá: vector, trình tạo, kế thừa, hàm VECTORCALL, lớp xây dựng, vị trí, hàm "ex", API, phương thức.
Đối tượng:
tăng và giảm;
thông dịch viên tăng và giảm;
phân bổ: tất cả, 512 byte, 4 kiB, lớn;
miễn phí;
đến/từ danh sách miễn phí;
từ điển được cụ thể hóa/phi vật chất hóa;
gõ bộ đệm;
nỗ lực tối ưu hóa;
dấu vết tối ưu hóa được tạo/thực thi;
rất tiếc đã được thực thi.
Người thu gom rác:
Thu gom rác;
Đối tượng đã đến thăm;
Đối tượng được thu thập.
Added in version 3.11.
- --disable-gil¶
Cho phép hỗ trợ chạy Python mà không cần global interpreter lock (GIL): free-threaded build.
Xác định macro
Py_GIL_DISABLEDvà thêm"t"vàosys.abiflags.Xem CPython có luồng miễn phí để biết thêm chi tiết.
Added in version 3.13.
- --enable-experimental-jit=[no|yes|yes-off|interpreter]¶
Chỉ ra cách tích hợp experimental just-in-time compiler.
no: Đừng xây dựng JIT.yes: Kích hoạt JIT. Để tắt nó khi chạy, hãy đặt biến môi trườngPYTHON_JIT=0.yes-off: Tạo JIT nhưng tắt nó theo mặc định. Để kích hoạt nó trong thời gian chạy, hãy đặt biến môi trườngPYTHON_JIT=1.interpreter: Kích hoạt "trình thông dịch JIT" (chỉ hữu ích cho những người đang gỡ lỗi JIT). Để tắt nó khi chạy, hãy đặt biến môi trườngPYTHON_JIT=0.
--enable-experimental-jit=nolà hành vi mặc định nếu tùy chọn này không được cung cấp và--enable-experimental-jitlà cách viết tắt của--enable-experimental-jit=yes. XemTools/jit/README.mdđể biết thêm thông tin, bao gồm cách cài đặt các phần phụ thuộc cần thiết trong thời gian xây dựng.Ghi chú
Khi xây dựng CPython có bật JIT, hãy đảm bảo rằng hệ thống của bạn đã cài đặt Python 3.11 trở lên.
Added in version 3.13.
- PKG_CONFIG¶
Đường dẫn đến tiện ích
pkg-config.
- PKG_CONFIG_LIBDIR¶
- PKG_CONFIG_PATH¶
tùy chọn
pkg-config.
3.3.2. Tùy chọn trình biên dịch C¶
- CC¶
Lệnh biên dịch C.
- CFLAGS¶
Cờ trình biên dịch C.
- CPP¶
Lệnh tiền xử lý C.
- CPPFLAGS¶
Cờ tiền xử lý C, ví dụ:
-Iinclude_dir.
3.3.3. Tùy chọn trình liên kết¶
- LDFLAGS¶
Cờ liên kết, ví dụ:
-Llibrary_directory.
- LIBS¶
Các thư viện để chuyển tới trình liên kết, ví dụ:
-llibrary.
- MACHDEP¶
Tên cho các tập tin thư viện phụ thuộc vào máy.
3.3.4. Tùy chọn cho phần phụ thuộc của bên thứ ba¶
Added in version 3.11.
- BZIP2_CFLAGS¶
- BZIP2_LIBS¶
Cờ trình biên dịch và trình liên kết C để liên kết Python với
libbz2, được sử dụng bởi mô-đunbz2, ghi đèpkg-config.
- CURSES_CFLAGS¶
- CURSES_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
libncurseshoặclibncursesw, được mô-đuncursessử dụng, ghi đèpkg-config.
- GDBM_CFLAGS¶
- GDBM_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
gdbm.
- LIBEDIT_CFLAGS¶
- LIBEDIT_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
libedit, được sử dụng bởi mô-đunreadline, ghi đèpkg-config.
- LIBFFI_CFLAGS¶
- LIBFFI_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
libffi, được sử dụng bởi mô-đunctypes, ghi đèpkg-config.
- LIBMPDEC_CFLAGS¶
- LIBMPDEC_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
libmpdec, được sử dụng bởi mô-đundecimal, ghi đèpkg-config.Ghi chú
Các biến môi trường này không có hiệu lực trừ khi
--with-system-libmpdecđược chỉ định.
- LIBLZMA_CFLAGS¶
- LIBLZMA_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
liblzma, được sử dụng bởi mô-đunlzma, ghi đèpkg-config.
- LIBREADLINE_CFLAGS¶
- LIBREADLINE_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
libreadline, được sử dụng bởi mô-đunreadline, ghi đèpkg-config.
- LIBSQLITE3_CFLAGS¶
- LIBSQLITE3_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
libsqlite3, được sử dụng bởi mô-đunsqlite3, ghi đèpkg-config.
- LIBUUID_CFLAGS¶
- LIBUUID_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
libuuid, được sử dụng bởi mô-đunuuid, ghi đèpkg-config.
- LIBZSTD_CFLAGS¶
- LIBZSTD_LIBS¶
Cờ trình biên dịch và trình liên kết C cho
libzstd, được sử dụng bởi mô-đuncompression.zstd, ghi đèpkg-config.Added in version 3.14.
- PANEL_CFLAGS¶
- PANEL_LIBS¶
Cờ trình biên dịch và liên kết C cho PANEL, ghi đè
pkg-config.Cờ trình biên dịch và trình liên kết C cho
libpanelhoặclibpanelw, được mô-đuncurses.panelsử dụng, ghi đèpkg-config.
- TCLTK_CFLAGS¶
- TCLTK_LIBS¶
Cờ trình biên dịch và liên kết C cho TCLTK, ghi đè
pkg-config.
- ZLIB_CFLAGS¶
3.3.5. Tùy chọn WebAssugging¶
- --enable-wasm-dynamic-linking¶
Bật hỗ trợ liên kết động cho WASM.
Liên kết động cho phép
dlopen. Kích thước tệp thực thi tăng lên do hạn chế loại bỏ mã chết và các tính năng bổ sung.Added in version 3.11.
- --enable-wasm-pthreads¶
Bật hỗ trợ pthread cho WASM.
Added in version 3.11.
3.3.6. Tùy chọn cài đặt¶
- --prefix=PREFIX¶
Cài đặt các tệp độc lập với kiến trúc trong PREFIX. Trên Unix, nó mặc định là
/usr/local.Giá trị này có thể được truy xuất trong thời gian chạy bằng
sys.prefix.Ví dụ: người ta có thể sử dụng
--prefix="$HOME/.local/"để cài đặt Python trong thư mục chính của nó.
- --exec-prefix=EPREFIX¶
Cài đặt các tệp phụ thuộc vào kiến trúc trong EPREFIX, mặc định là
--prefix.Giá trị này có thể được truy xuất trong thời gian chạy bằng
sys.exec_prefix.
3.3.7. Tùy chọn hiệu suất¶
Nên định cấu hình Python bằng --enable-optimizations --with-lto (PGO + LTO) để có hiệu suất tốt nhất. Cờ --enable-bolt thử nghiệm cũng có thể được sử dụng để cải thiện hiệu suất.
- --enable-optimizations¶
Bật Tối ưu hóa hướng dẫn hồ sơ (PGO) bằng
PROFILE_TASK(bị tắt theo mặc định).Trình biên dịch C Clang yêu cầu chương trình
llvm-profdatacho PGO. Trên macOS, GCC cũng yêu cầu: GCC chỉ là bí danh của Clang trên macOS.Vô hiệu hóa cả sự xen kẽ ngữ nghĩa trong libpython nếu
--enable-sharedvà GCC được sử dụng: thêm-fno-semantic-interpositionvào cờ trình biên dịch và trình liên kết.Ghi chú
Trong quá trình xây dựng, bạn có thể gặp phải cảnh báo của trình biên dịch về việc dữ liệu hồ sơ không có sẵn cho một số tệp nguồn. Những cảnh báo này vô hại vì chỉ một tập hợp con của mã được thực hiện trong quá trình thu thập dữ liệu hồ sơ. Để tắt những cảnh báo này trên Clang, hãy chặn chúng theo cách thủ công bằng cách thêm
-Wno-profile-instr-unprofiledvàoCFLAGS.Added in version 3.6.
Thay đổi trong phiên bản 3.10: Sử dụng
-fno-semantic-interpositiontrên GCC.
- PROFILE_TASK¶
Biến môi trường được sử dụng trong Makefile: Đối số dòng lệnh Python cho tác vụ tạo PGO.
Mặc định:
-m test --pgo --timeout=$(TESTTIMEOUT).Added in version 3.8.
Thay đổi trong phiên bản 3.13: Thất bại trong nhiệm vụ không còn bị bỏ qua một cách âm thầm nữa.
- --with-lto=[full|thin|no|yes]¶
Bật Tối ưu hóa thời gian liên kết (LTO) trong mọi bản dựng (bị tắt theo mặc định).
Trình biên dịch C Clang yêu cầu
llvm-archo LTO (artrên macOS), cũng như trình liên kết nhận biết LTO (ld.goldhoặclld).Added in version 3.6.
Added in version 3.11: Để sử dụng tính năng ThinLTO, hãy sử dụng
--with-lto=thintrên Clang.Thay đổi trong phiên bản 3.12: Sử dụng ThinLTO làm chính sách tối ưu hóa mặc định trên Clang nếu trình biên dịch chấp nhận cờ.
- --enable-bolt¶
Cho phép sử dụng BOLT post-link binary optimizer (bị tắt theo mặc định).
BOLT là một phần của dự án LLVM nhưng không phải lúc nào cũng được đưa vào bản phân phối nhị phân của chúng. Cờ này yêu cầu
llvm-boltvàmerge-fdatacó sẵn.BOLT vẫn là một dự án khá mới nên hiện tại lá cờ này nên được coi là thử nghiệm. Vì công cụ này hoạt động trên mã máy nên thành công của nó phụ thuộc vào sự kết hợp giữa môi trường xây dựng + cấu hình tối ưu hóa khác + kiến trúc CPU và không phải tất cả các kết hợp đều được hỗ trợ. Các phiên bản BOLT trước LLVM 16 được biết là đã gây ra sự cố cho BOLT trong một số trường hợp. Chúng tôi đặc biệt khuyến khích sử dụng LLVM 16 hoặc mới hơn để tối ưu hóa BOLT.
Các biến
BOLT_INSTRUMENT_FLAGSvàBOLT_APPLY_FLAGSconfigure có thể được xác định để ghi đè bộ đối số mặc định cho llvm-bolt cho công cụ và áp dụng dữ liệu BOLT cho các tệp nhị phân tương ứng.Added in version 3.12.
- BOLT_APPLY_FLAGS¶
Đối số cho
llvm-boltkhi tạo BOLT optimized binary.Added in version 3.12.
- BOLT_INSTRUMENT_FLAGS¶
Đối số cho
llvm-boltkhi thiết lập các tệp nhị phân.Added in version 3.12.
- --with-computed-gotos¶
Bật gotos được tính toán trong vòng đánh giá (được bật theo mặc định trên các trình biên dịch được hỗ trợ).
- --with-tail-call-interp¶
Bật trình thông dịch bằng cách sử dụng lệnh gọi đuôi trong CPython. Nếu được bật, bạn nên bật PGO (
--enable-optimizations). Tùy chọn này đặc biệt yêu cầu trình biên dịch C có hỗ trợ lệnh gọi tail thích hợp và quy ước gọi preserve_none. Ví dụ: Clang 19 và mới hơn hỗ trợ tính năng này.Added in version 3.14.
- --without-mimalloc¶
Tắt bộ cấp phát mimalloc nhanh (được bật theo mặc định).
Không thể sử dụng tùy chọn này cùng với
--disable-gilvì bản dựng free-threaded yêu cầu mimalloc.Xem thêm biến môi trường
PYTHONMALLOC.
- --without-pymalloc¶
Vô hiệu hóa bộ cấp phát bộ nhớ Python chuyên dụng pymalloc (được bật theo mặc định).
Xem thêm biến môi trường
PYTHONMALLOC.
- --without-doc-strings¶
Tắt các chuỗi tài liệu tĩnh để giảm dung lượng bộ nhớ (được bật theo mặc định). Chuỗi tài liệu được xác định bằng Python không bị ảnh hưởng.
Không xác định macro
WITH_DOC_STRINGS.Xem macro
PyDoc_STRVAR().
- --enable-profiling¶
Bật cấu hình mã cấp C bằng
gprof(bị tắt theo mặc định).
- --with-strict-overflow¶
Thêm
-fstrict-overflowvào cờ của trình biên dịch C (theo mặc định, chúng tôi thêm-fno-strict-overflowthay thế).
- --without-remote-debug¶
Tắt hỗ trợ gỡ lỗi từ xa được mô tả trong PEP 768 (được bật theo mặc định). Khi cờ này được cung cấp, mã cho phép trình thông dịch lên lịch thực thi tệp Python trong một quy trình riêng biệt như được mô tả trong PEP 768 sẽ không được biên dịch. Điều này bao gồm cả chức năng lên lịch thực thi mã và chức năng nhận mã sẽ được thực thi.
-
Py_REMOTE_DEBUG¶
Macro này được xác định theo mặc định, trừ khi Python được định cấu hình bằng
--without-remote-debug.Lưu ý rằng ngay cả khi macro được xác định, tính năng gỡ lỗi từ xa có thể không khả dụng (ví dụ: trên nền tảng không tương thích).
Added in version 3.14.
-
Py_REMOTE_DEBUG¶
3.3.8. Bản dựng gỡ lỗi Python¶
Bản dựng gỡ lỗi là Python được xây dựng với tùy chọn cấu hình --with-pydebug.
Tác dụng của bản dựng gỡ lỗi:
Hiển thị tất cả các cảnh báo theo mặc định: danh sách các bộ lọc cảnh báo mặc định trống trong mô-đun
warnings.Thêm
dvàosys.abiflags.Thêm chức năng
sys.gettotalrefcount().Thêm tùy chọn dòng lệnh
-X showrefcount.Thêm tùy chọn dòng lệnh
-dvà biến môi trườngPYTHONDEBUGđể gỡ lỗi trình phân tích cú pháp.Thêm hỗ trợ cho biến
__lltrace__: bật theo dõi mức độ thấp trong vòng đánh giá mã byte nếu biến được xác định.Cài đặt debug hooks on memory allocators để phát hiện lỗi tràn bộ đệm và các lỗi bộ nhớ khác.
Xác định macro
Py_DEBUGvàPy_REF_DEBUG.Thêm kiểm tra thời gian chạy: mã được bao quanh bởi
#ifdef Py_DEBUGvà#endif. Bật xác nhậnassert(...)và_PyObject_ASSERT(...): không đặt macroNDEBUG(xem thêm tùy chọn cấu hình--with-assertions). Kiểm tra thời gian chạy chính:Thêm kiểm tra độ tỉnh táo trên các đối số của hàm.
Các đối tượng Unicode và int được tạo với bộ nhớ chứa đầy mẫu để phát hiện việc sử dụng các đối tượng chưa được khởi tạo.
Đảm bảo rằng các hàm có thể xóa hoặc thay thế ngoại lệ hiện tại không được gọi khi có ngoại lệ được nêu ra.
Kiểm tra xem các chức năng giải phóng không thay đổi ngoại lệ hiện tại.
Trình thu gom rác (chức năng
gc.collect()) chạy một số kiểm tra cơ bản về tính nhất quán của đối tượng.Macro
Py_SAFE_DOWNCAST()kiểm tra tình trạng tràn và tràn số nguyên khi truyền xuống từ loại rộng sang loại hẹp.
Xem thêm tùy chọn cấu hình Python Development Mode và --with-trace-refs.
Thay đổi trong phiên bản 3.8: Các bản phát hành hiện tương thích với ABI với các bản dựng gỡ lỗi: việc xác định macro Py_DEBUG không còn ngụ ý macro Py_TRACE_REFS nữa (xem tùy chọn --with-trace-refs). Tuy nhiên, bản dựng gỡ lỗi vẫn hiển thị nhiều ký hiệu hơn bản dựng bản phát hành và mã được tạo dựa trên bản dựng gỡ lỗi không nhất thiết phải tương thích với bản dựng phát hành.
3.3.9. Tùy chọn gỡ lỗi¶
- --with-pydebug¶
Build Python in debug mode: xác định macro
Py_DEBUG(bị tắt theo mặc định).
- --with-trace-refs¶
Bật tham chiếu theo dõi cho mục đích gỡ lỗi (bị tắt theo mặc định).
Hiệu ứng:
Xác định macro
Py_TRACE_REFS.Thêm chức năng
sys.getobjects().Thêm biến môi trường
PYTHONDUMPREFS.
Biến môi trường
PYTHONDUMPREFScó thể được sử dụng để kết xuất các đối tượng và số lượng tham chiếu vẫn còn tồn tại khi thoát Python.Statically allocated objects không được theo dõi.
Added in version 3.8.
Thay đổi trong phiên bản 3.13: Bản dựng này hiện tương thích với ABI với bản phát hành và debug build.
- --with-assertions¶
Xây dựng với xác nhận C được bật (mặc định là không):
assert(...);và_PyObject_ASSERT(...);.Nếu được đặt, macro
NDEBUGkhông được xác định trong biến trình biên dịchOPT.Xem thêm tùy chọn
--with-pydebug(debug build) cũng cho phép xác nhận.Added in version 3.6.
- --with-valgrind¶
Kích hoạt hỗ trợ Valgrind (mặc định là không).
- --with-dtrace¶
Bật hỗ trợ DTrace (mặc định là không).
Xem Instrumenting CPython with DTrace and SystemTap.
Added in version 3.6.
- --with-address-sanitizer¶
Bật trình phát hiện lỗi bộ nhớ addressSanitizer,
asan(mặc định là không). Để cải thiện khả năng phát hiện ASan, bạn cũng có thể muốn kết hợp điều này với--without-pymallocđể vô hiệu hóa bộ cấp phát đối tượng nhỏ chuyên dụng mà việc phân bổ của nó không được ASan theo dõi.Added in version 3.6.
- --with-memory-sanitizer¶
Bật trình phát hiện lỗi phân bổ MemorySanitizer,
msan(mặc định là không).Added in version 3.6.
- --with-undefined-behavior-sanitizer¶
Bật trình phát hiện hành vi không xác định UndebehaviorSanitizer,
ubsan(mặc định là không).Added in version 3.6.
- --with-thread-sanitizer¶
Bật trình phát hiện cuộc đua dữ liệu ThreadSanitizer,
tsan(mặc định là không).Added in version 3.13.
3.3.10. Tùy chọn trình liên kết¶
Cho phép xây dựng thư viện Python dùng chung:
libpython(mặc định là không).
- --without-static-libpython¶
Không xây dựng
libpythonMAJOR.MINOR.avà không cài đặtpython.o(được xây dựng và bật theo mặc định).Added in version 3.10.
3.3.11. Tùy chọn thư viện¶
- --with-libs='lib1 ...'¶
Liên kết với các thư viện bổ sung (mặc định là không).
- --with-system-expat¶
Xây dựng mô-đun
pyexpatbằng thư việnexpatđã cài đặt (mặc định là không).
- --with-system-libmpdec¶
Xây dựng mô-đun mở rộng
_decimalbằng thư việnmpdecimalđã cài đặt, xem mô-đundecimal(mặc định là có).Added in version 3.3.
Thay đổi trong phiên bản 3.13: Mặc định sử dụng thư viện
mpdecimalđã cài đặt.Thay đổi trong phiên bản 3.15: Một bản sao đi kèm của thư viện sẽ không còn được chọn ngầm nếu không tìm thấy thư viện
mpdecimalđã cài đặt. Chỉ trong Python 3.15, nó vẫn có thể được chọn rõ ràng bằng--with-system-libmpdec=nohoặc--without-system-libmpdec.Không được dùng nữa kể từ phiên bản 3.13, sẽ bị xóa trong phiên bản 3.16: Bản sao của nguồn thư viện
mpdecimalsẽ không còn được phân phối với Python 3.16 nữa.Xem thêm
- --with-readline=readline|editline¶
Chỉ định thư viện phụ trợ cho mô-đun
readline.readline: Sử dụng readline làm phụ trợ.
dòng chỉnh sửa: Sử dụng dòng chỉnh sửa làm phụ trợ.
Added in version 3.10.
- --without-readline¶
Không xây dựng mô-đun
readline(được xây dựng theo mặc định).Không xác định macro
HAVE_LIBREADLINE.Added in version 3.10.
- --with-libm=STRING¶
Ghi đè thư viện toán học
libmthành STRING (mặc định phụ thuộc vào hệ thống).
- --with-libc=STRING¶
Ghi đè thư viện
libcC thành STRING (mặc định phụ thuộc vào hệ thống).
- --with-openssl=DIR¶
Gốc của thư mục OpenSSL.
Added in version 3.7.
- --with-openssl-rpath=[no|auto|DIR]¶
Đặt thư mục thư viện thời gian chạy (rpath) cho thư viện OpenSSL:
no(mặc định): không đặt đường dẫn;auto: tự động phát hiện đường dẫn từ--with-opensslvàpkg-config;DIR: đặt đường dẫn rõ ràng.
Added in version 3.10.
3.3.12. Tùy chọn bảo mật¶
- --with-hash-algorithm=[fnv|siphash13|siphash24]¶
Chọn thuật toán băm để sử dụng trong
Python/pyhash.c:siphash13(mặc định);siphash24;fnv.
Added in version 3.4.
Added in version 3.11:
siphash13được thêm vào và nó là mặc định mới.
- --with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2¶
Các mô-đun băm tích hợp:
md5;sha1;sha256;sha512;sha3(có rung);blake2.
Added in version 3.9.
- --with-ssl-default-suites=[python|openssl|STRING]¶
Ghi đè chuỗi bộ mật mã mặc định OpenSSL:
python(mặc định): sử dụng lựa chọn ưa thích của Python;openssl: giữ nguyên các giá trị mặc định của OpenSSL;STRING: sử dụng chuỗi tùy chỉnh
Xem mô-đun
ssl.Added in version 3.7.
Thay đổi trong phiên bản 3.10: Cài đặt
pythonvà STRING cũng đặt TLS 1.2 làm phiên bản giao thức tối thiểu.
- --disable-safety¶
Tắt các tùy chọn trình biên dịch recommended by OpenSSF vì lý do bảo mật mà không ảnh hưởng đến hiệu năng. Nếu tùy chọn này không được bật, CPython sẽ được xây dựng dựa trên các tùy chọn trình biên dịch an toàn mà không bị chậm lại. Khi tùy chọn này được bật, CPython sẽ không được xây dựng với các tùy chọn trình biên dịch được liệt kê bên dưới.
Các tùy chọn trình biên dịch sau bị tắt với
--disable-safety:-fstack-protector-strong: Bật kiểm tra thời gian chạy để phát hiện lỗi tràn bộ đệm dựa trên ngăn xếp.
-Wtrampolines: Bật cảnh báo về các tấm bạt lò xo yêu cầu ngăn xếp có thể thực thi được.
Added in version 3.14.
- --enable-slower-safety¶
Bật các tùy chọn trình biên dịch recommended by OpenSSF vì lý do bảo mật đòi hỏi chi phí cao. Nếu tùy chọn này không được bật, CPython sẽ không được xây dựng dựa trên các tùy chọn trình biên dịch an toàn ảnh hưởng đến hiệu suất. Khi tùy chọn này được bật, CPython sẽ được xây dựng với các tùy chọn trình biên dịch được liệt kê bên dưới.
Các tùy chọn trình biên dịch sau được bật với
--enable-slower-safety:-D_FORTIFY_SOURCE=3: Củng cố các nguồn bằng các kiểm tra biên dịch và thời gian chạy để phát hiện việc sử dụng libc không an toàn và tràn bộ đệm.
Added in version 3.14.
3.3.13. Tùy chọn macOS¶
Xem Mac/README.rst.
- --enable-universalsdk¶
- --enable-universalsdk=SDKDIR¶
Tạo một bản dựng nhị phân phổ quát. SDKDIR chỉ định macOS SDK nào sẽ được sử dụng để thực hiện quá trình xây dựng (mặc định là không).
- --enable-framework¶
- --enable-framework=INSTALLDIR¶
Tạo Python.framework thay vì cài đặt Unix truyền thống. Tùy chọn INSTALLDIR chỉ định đường dẫn cài đặt (mặc định là không).
- --with-universal-archs=ARCH¶
Chỉ định loại nhị phân phổ quát sẽ được tạo. Tùy chọn này chỉ hợp lệ khi
--enable-universalsdkđược đặt.Tùy chọn:
universal2(x86-64 và arm64);32-bit(PPC và i386);64-bit(PPC64 và x86-64);3-way(i386, PPC và x86-64);intel(i386 và x86-64);intel-32(i386);intel-64(x86-64);all(PPC, i386, PPC64 và x86-64).
Lưu ý rằng các giá trị cho mục cấu hình này là not giống với giá trị nhận dạng được sử dụng cho bánh xe nhị phân phổ quát trên macOS. Xem Hướng dẫn sử dụng bao bì Python để biết chi tiết về packaging platform compatibility tags used on macOS
- --with-framework-name=FRAMEWORK¶
Chỉ định tên cho khung python trên macOS chỉ hợp lệ khi đặt
--enable-framework(mặc định:Python).
- --with-app-store-compliance¶
- --with-app-store-compliance=PATCH-FILE¶
Thư viện chuẩn Python chứa các chuỗi được biết là có thể gây ra lỗi công cụ kiểm tra tự động khi được các Cửa hàng ứng dụng macOS và iOS gửi để phân phối. Nếu được bật, tùy chọn này sẽ áp dụng danh sách các bản vá được xác định là có tác dụng điều chỉnh việc tuân thủ cửa hàng ứng dụng. Một tập tin vá tùy chỉnh cũng có thể được chỉ định. Tùy chọn này bị tắt theo mặc định.
Added in version 3.13.
3.3.14. Tùy chọn iOS¶
Xem iOS/README.rst.
- --enable-framework=INSTALLDIR¶
Tạo Python.framework. Không giống như macOS, đối số INSTALLDIR chỉ định đường dẫn cài đặt là bắt buộc.
- --with-framework-name=FRAMEWORK¶
Chỉ định tên cho khung (mặc định:
Python).
3.3.15. Tùy chọn biên dịch chéo¶
Biên dịch chéo, còn được gọi là xây dựng chéo, có thể được sử dụng để xây dựng Python cho kiến trúc hoặc nền tảng CPU khác. Biên dịch chéo yêu cầu trình thông dịch Python cho nền tảng xây dựng. Phiên bản của Python xây dựng phải khớp với phiên bản của Python được biên dịch chéo trên máy chủ.
- --build=BUILD¶
định cấu hình để xây dựng trên BUILD, thường được đoán bởi config.guess.
- --host=HOST¶
biên dịch chéo để xây dựng các chương trình chạy trên HOST (nền tảng đích)
- --with-build-python=path/to/python¶
đường dẫn để xây dựng nhị phân
pythonđể biên dịch chéoAdded in version 3.11.
- CONFIG_SITE=file¶
Một biến môi trường trỏ đến một tệp có phần ghi đè cấu hình.
Ví dụ về tệp config.site:
# config.site-aarch64 ac_cv_buggy_getaddrinfo=không ac_cv_file__dev_ptmx=có ac_cv_file__dev_ptc=không
- HOSTRUNNER¶
Chương trình chạy CPython cho nền tảng máy chủ để biên dịch chéo.
Added in version 3.11.
Ví dụ biên dịch chéo:
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. Hệ thống xây dựng Python¶
3.4.1. Các tập tin chính của hệ thống xây dựng¶
configure.ac=>configure;Makefile.pre.in=>Makefile(được tạo bởiconfigure);pyconfig.h(được tạo bởiconfigure);Modules/Setup: Các tiện ích mở rộng C được Makefile xây dựng bằng cách sử dụng tập lệnh shellModule/makesetup;
3.4.2. Các bước xây dựng chính¶
Các tệp C (
.c) được xây dựng dưới dạng tệp đối tượng (.o).Thư viện
libpythontĩnh (.a) được tạo từ các tệp đối tượng.python.ovà thư việnlibpythontĩnh được liên kết với chương trìnhpythoncuối cùng.Tiện ích mở rộng C được Makefile xây dựng (xem
Modules/Setup).
3.4.3. Mục tiêu Makefile chính¶
3.4.3.1. làm¶
Trong hầu hết các trường hợp, khi xây dựng lại sau khi chỉnh sửa một số mã hoặc làm mới giao dịch thanh toán của bạn từ thượng nguồn, tất cả những gì bạn cần làm là thực thi make, (theo ngữ nghĩa của Make) xây dựng mục tiêu mặc định, mục tiêu đầu tiên được xác định trong Makefile. Theo truyền thống (bao gồm cả dự án CPython), đây thường là mục tiêu all. Tập lệnh configure mở rộng biến autoconf, @DEF_MAKE_ALL_RULE@ để mô tả chính xác mục tiêu nào make all sẽ xây dựng. Ba lựa chọn là:
profile-opt(được định cấu hình bằng--enable-optimizations)build_wasm(được chọn nếu nền tảng máy chủ khớp vớiwasm32-wasi*hoặcwasm32-emscripten)build_all(được định cấu hình mà không sử dụng rõ ràng một trong hai cái khác)
Tùy thuộc vào những thay đổi gần đây nhất của tệp nguồn, Make sẽ xây dựng lại mọi mục tiêu (tệp đối tượng và tệp thực thi) được coi là lỗi thời, bao gồm cả việc chạy lại configure nếu cần. Tuy nhiên, phần phụ thuộc nguồn/đích rất nhiều và được duy trì theo cách thủ công, do đó, Make đôi khi không có tất cả thông tin cần thiết để phát hiện chính xác tất cả các mục tiêu cần được xây dựng lại. Tùy thuộc vào mục tiêu nào không được xây dựng lại, bạn có thể gặp một số vấn đề. Nếu bạn gặp vấn đề về xây dựng hoặc kiểm tra mà không thể giải thích bằng cách khác, make clean && make sẽ giải quyết hầu hết các vấn đề phụ thuộc, tuy nhiên thời gian xây dựng sẽ lâu hơn.
3.4.3.2. làm nền tảng¶
Xây dựng chương trình python nhưng không xây dựng các mô-đun mở rộng thư viện tiêu chuẩn. Điều này tạo ra một tệp có tên platform chứa một dòng mô tả chi tiết về nền tảng xây dựng, ví dụ: macosx-14.3-arm64-3.12 hoặc linux-x86_64-3.13.
3.4.3.3. chọn hồ sơ¶
Xây dựng Python bằng cách sử dụng tính năng tối ưu hóa theo hướng dẫn hồ sơ (PGO). Bạn có thể sử dụng tùy chọn configure --enable-optimizations để đặt mục tiêu này làm mục tiêu mặc định của lệnh make (make all hoặc chỉ make).
3.4.3.4. làm sạch¶
Xóa các tập tin được xây dựng.
3.4.3.5. làm sạch¶
Ngoài công việc do make clean thực hiện, hãy xóa các tệp được tạo bởi tập lệnh cấu hình. configure sẽ phải được chạy trước khi xây dựng lại. [6]
3.4.3.6. thực hiện cài đặt¶
Xây dựng mục tiêu all và cài đặt Python.
3.4.3.7. làm bài kiểm tra¶
Xây dựng mục tiêu all và chạy bộ thử nghiệm Python với tùy chọn --fast-ci mà không cần kiểm tra GUI. Biến:
TESTOPTS: tùy chọn dòng lệnh regrtest bổ sung.TESTPYTHONOPTS: tùy chọn dòng lệnh Python bổ sung.TESTTIMEOUT: thời gian chờ tính bằng giây (mặc định: 10 phút).
3.4.3.8. làm ci¶
Điều này tương tự như make test, nhưng sử dụng -ugui để chạy thử nghiệm GUI.
Added in version 3.14.
3.4.3.9. tạo buildbottest¶
Điều này tương tự như make test, nhưng sử dụng tùy chọn --slow-ci và thời gian chờ mặc định là 20 phút, thay vì tùy chọn --fast-ci.
3.4.3.10. làm regen-tất cả¶
Tái tạo (gần như) tất cả các tệp được tạo. Chúng bao gồm (nhưng không giới hạn) các trường hợp mã byte và tệp trình tạo trình phân tích cú pháp. make regen-stdlib-module-names và autoconf phải được chạy riêng cho generated files còn lại.
3.4.4. Phần mở rộng C¶
Một số tiện ích mở rộng C được xây dựng dưới dạng mô-đun tích hợp, như mô-đun sys. Chúng được xây dựng bằng macro Py_BUILD_CORE_BUILTIN được xác định. Các mô-đun tích hợp không có thuộc tính __file__:
>>> nhập hệ thống
>>> hệ thống
<mô-đun 'sys' (tích hợp sẵn)>
>>> sys.__file__
Traceback (cuộc gọi gần đây nhất):
Tệp "<stdin>", dòng 1, trong <module>
AttributionError: mô-đun 'sys' không có thuộc tính '__file__'
Các tiện ích mở rộng C khác được xây dựng dưới dạng thư viện động, như mô-đun _asyncio. Chúng được xây dựng bằng macro Py_BUILD_CORE_MODULE được xác định. Ví dụ trên Linux x86-64:
>>> nhập _asyncio
>>> _asyncio
<mô-đun '_asyncio' từ '/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 được sử dụng để tạo các mục tiêu Makefile để xây dựng các tiện ích mở rộng C. Ở phần đầu của tệp, phần mở rộng C được xây dựng dưới dạng mô-đun tích hợp. Các tiện ích mở rộng được xác định sau điểm đánh dấu *shared* được xây dựng dưới dạng thư viện động.
Các macro PyAPI_FUNC(), PyAPI_DATA() và PyMODINIT_FUNC của Include/exports.h được xác định khác nhau tùy thuộc vào việc macro Py_BUILD_CORE_MODULE có được xác định hay không:
Sử dụng
Py_EXPORTED_SYMBOLnếuPy_BUILD_CORE_MODULEđược xác địnhSử dụng
Py_IMPORTED_SYMBOLnếu không.
Nếu macro Py_BUILD_CORE_BUILTIN được sử dụng do nhầm lẫn trên tiện ích mở rộng C được xây dựng dưới dạng thư viện dùng chung thì chức năng PyInit_xxx() của nó không được xuất, gây ra ImportError khi nhập.
3.5. Cờ trình biên dịch và liên kết¶
Các tùy chọn được đặt bởi tập lệnh ./configure và các biến môi trường và được Makefile sử dụng.
3.5.1. Cờ tiền xử lý¶
- CONFIGURE_CPPFLAGS¶
Giá trị của biến
CPPFLAGSđược truyền cho tập lệnh./configure.Added in version 3.6.
- CPPFLAGS¶
(Mục tiêu) Cờ tiền xử lý C/C++, ví dụ:
-Iinclude_dirnếu bạn có tiêu đề trong thư mục không chuẩn include_dir.Cả
CPPFLAGSvàLDFLAGSđều cần chứa giá trị của shell để có thể xây dựng các mô-đun mở rộng bằng cách sử dụng các thư mục được chỉ định trong các biến môi trường.
- BASECPPFLAGS¶
Added in version 3.4.
- PY_CPPFLAGS¶
Các cờ tiền xử lý bổ sung được thêm vào để xây dựng các tệp đối tượng trình thông dịch.
Mặc định:
$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS).Added in version 3.2.
3.5.2. Cờ trình biên dịch¶
- CC¶
Lệnh biên dịch C.
Ví dụ:
gcc -pthread.
- CXX¶
Lệnh biên dịch C++.
Ví dụ:
g++ -pthread.
- CFLAGS¶
Cờ trình biên dịch C.
- CFLAGS_NODIST¶
CFLAGS_NODISTđược sử dụng để xây dựng trình thông dịch và phần mở rộng stdlib C. Sử dụng nó khi cờ trình biên dịch phải là not là một phần củaCFLAGSsau khi Python được cài đặt (gh-65320).Đặc biệt,
CFLAGSkhông được chứa:cờ trình biên dịch
-I(để đặt đường dẫn tìm kiếm cho các tệp bao gồm). Cờ-Iđược xử lý từ trái sang phải và mọi cờ trongCFLAGSsẽ được ưu tiên hơn các cờ-Ido người dùng và gói cung cấp.các cờ cứng như
-Werrorvì các bản phân phối không thể kiểm soát liệu các gói do người dùng cài đặt có tuân thủ các tiêu chuẩn nâng cao như vậy hay không.
Added in version 3.5.
- COMPILEALL_OPTS¶
Các tùy chọn được chuyển đến dòng lệnh
compileallkhi xây dựng tệp PYC trongmake install. Mặc định:-j0.Added in version 3.12.
- EXTRA_CFLAGS¶
Cờ trình biên dịch bổ sung C.
- CONFIGURE_CFLAGS¶
Giá trị của biến
CFLAGSđược truyền cho tập lệnh./configure.Added in version 3.2.
- CONFIGURE_CFLAGS_NODIST¶
Giá trị của biến
CFLAGS_NODISTđược truyền cho tập lệnh./configure.Added in version 3.5.
- BASECFLAGS¶
Cờ biên dịch cơ sở.
- OPT¶
Cờ tối ưu hóa
- CFLAGS_ALIASING¶
Cờ bí danh nghiêm ngặt hoặc không nghiêm ngặt được sử dụng để biên dịch
Python/dtoa.c.Added in version 3.7.
- CFLAGS_CEVAL¶
Cờ được sử dụng để biên dịch
Python/ceval.c.Added in version 3.14.5.
- CCSHARED¶
Cờ trình biên dịch được sử dụng để xây dựng thư viện dùng chung.
Ví dụ:
-fPICđược sử dụng trên Linux và BSD.
- CFLAGSFORSHARED¶
Đã thêm cờ C bổ sung để xây dựng tệp đối tượng trình thông dịch.
Mặc định:
$(CCSHARED)khi--enable-sharedđược sử dụng hoặc nếu không thì là một chuỗi trống.
- PY_CFLAGS¶
Mặc định:
$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS).
- PY_CFLAGS_NODIST¶
Mặc định:
$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal.Added in version 3.5.
- PY_STDMODULE_CFLAGS¶
Cờ C được sử dụng để xây dựng các tệp đối tượng trình thông dịch.
Mặc định:
$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED).Added in version 3.7.
- PY_CORE_CFLAGS¶
Mặc định:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE.Added in version 3.2.
- PY_BUILTIN_MODULE_CFLAGS¶
Cờ trình biên dịch để xây dựng mô-đun mở rộng thư viện tiêu chuẩn dưới dạng mô-đun tích hợp, như mô-đun
posix.Mặc định:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN.Added in version 3.8.
- PURIFY¶
Lệnh thanh lọc. Purify là một chương trình gỡ lỗi bộ nhớ.
Mặc định: chuỗi trống (không được sử dụng).
3.5.3. Cờ liên kết¶
- LINKCC¶
Lệnh trình liên kết được sử dụng để xây dựng các chương trình như
pythonvà_testembed.Mặc định:
$(PURIFY) $(CC).
- CONFIGURE_LDFLAGS¶
Giá trị của biến
LDFLAGSđược truyền cho tập lệnh./configure.Tránh gán
CFLAGS,LDFLAGS, v.v. để người dùng có thể sử dụng chúng trên dòng lệnh để nối vào các giá trị này mà không cần chạm vào các giá trị đặt trước.Added in version 3.2.
- LDFLAGS_NODIST¶
LDFLAGS_NODISTđược sử dụng theo cách tương tự nhưCFLAGS_NODIST. Sử dụng nó khi cờ liên kết nên not là một phần củaLDFLAGSsau khi Python được cài đặt (gh-65320).Đặc biệt,
LDFLAGSkhông được chứa:cờ trình biên dịch
-L(để đặt đường dẫn tìm kiếm cho thư viện). Cờ-Lđược xử lý từ trái sang phải và mọi cờ trongLDFLAGSsẽ được ưu tiên hơn các cờ-Ldo người dùng và gói cung cấp.
- CONFIGURE_LDFLAGS_NODIST¶
Giá trị của biến
LDFLAGS_NODISTđược truyền cho tập lệnh./configure.Added in version 3.8.
- LDFLAGS¶
Cờ liên kết, ví dụ:
-Llib_dirnếu bạn có thư viện trong thư mục không chuẩn lib_dir.Cả
CPPFLAGSvàLDFLAGSđều cần chứa giá trị của shell để có thể xây dựng các mô-đun mở rộng bằng cách sử dụng các thư mục được chỉ định trong các biến môi trường.
- LIBS¶
Cờ trình liên kết để chuyển các thư viện tới trình liên kết khi liên kết tệp thực thi Python.
Ví dụ:
-lrt.
- LDSHARED¶
Lệnh xây dựng thư viện dùng chung.
Mặc định:
@LDSHARED@ $(PY_LDFLAGS).
- BLDSHARED¶
Lệnh xây dựng thư viện chia sẻ
libpython.Mặc định:
@BLDSHARED@ $(PY_CORE_LDFLAGS).
- PY_LDFLAGS¶
Mặc định:
$(CONFIGURE_LDFLAGS) $(LDFLAGS).
- PY_LDFLAGS_NODIST¶
Mặc định:
$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST).Added in version 3.8.
- PY_CORE_LDFLAGS¶
Cờ liên kết được sử dụng để xây dựng các tệp đối tượng trình thông dịch.
Added in version 3.8.
Chú thích cuối trang
git clean -fdx thậm chí còn là một cách cực đoan hơn để "dọn dẹp" trang thanh toán của bạn. Nó xóa tất cả các tệp mà Git không biết. Khi tìm lỗi bằng git bisect, đây là recommended between probes để đảm bảo một bản dựng hoàn toàn sạch sẽ. Use with care, vì nó sẽ xóa tất cả các tệp chưa được kiểm tra trong Git, bao gồm cả tác phẩm mới, chưa được cam kết của bạn.