一、编译python依赖很多库,首选使用如下命令安装依赖库:
1.第一步,打开\etc\apt\sources.list文件;
2.添加:
deb-src http://archive.ubuntu.com/ubuntu/ bionic main
3.执行以下命令:
sudo apt-get update
4.执行以下命令“”
sudo apt-get install build-essential gdb lcov pkg-config libbz2-dev libffi-dev liblzma-dev libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev lzma lzma-dev tk-dev uuid-dev zlib1g-dev libgdbm-dev
二、configure ,使用以下命令查看python中configure的选项:
./configure -h
可以看出以下:
`configure' configures python 3.9 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/python]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-universalsdk[=SDKDIR]
create a universal binary build. SDKDIR specifies
which macOS SDK should be used to perform the build,
see Mac/README.rst. (default is no)
--enable-framework[=INSTALLDIR]
create a Python.framework rather than a traditional
Unix install. optional INSTALLDIR specifies the
installation path. see Mac/README.rst (default is
no)
--enable-shared enable building a shared Python library (default is
no)
--enable-profiling enable C-level code profiling with gprof (default is
no)
--enable-optimizations enable expensive, stable optimizations (PGO, etc.)
(default is no)
--enable-loadable-sqlite-extensions
support loadable extensions in _sqlite module, see
Doc/library/sqlite3.rst (default is no)
--enable-ipv6 enable ipv6 (with ipv4) support, see
Doc/library/socket.rst (default is yes if supported)
--enable-big-digits[=15|30]
use big digits (30 or 15 bits) for Python longs
(default is system-dependent)]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-universal-archs=ARCH
specify the kind of macOS universal binary that
should be created. This option is only valid when
--enable-universalsdk is set; options are:
("universal2", "intel-64", "intel-32", "intel",
"32-bit", "64-bit", "3-way", or "all") see
Mac/README.rst
--with-framework-name=FRAMEWORK
specify the name for the python framework on macOS
only valid when --enable-framework is set. see
Mac/README.rst (default is 'Python')
--with-cxx-main[=COMPILER]
compile main() and link Python executable with C++
compiler specified in COMPILER (default is $CXX)
--with-suffix=SUFFIX set executable suffix to SUFFIX (default is '.exe')
--with-pydebug build with Py_DEBUG defined (default is no)
--with-trace-refs enable tracing references for debugging purpose
(default is no)
--with-assertions build with C assertions enabled (default is no)
--with-lto enable Link-Time-Optimization in any build (default
is no)
--with-hash-algorithm=[fnv|siphash24]
select hash algorithm for use in Python/pyhash.c
(default is SipHash24)
--with-tzpath=
Select the default time zone search path for zoneinfo.TZPATH
--with-address-sanitizer
enable AddressSanitizer memory error detector,
'asan' (default is no)
--with-memory-sanitizer enable MemorySanitizer allocation error detector,
'msan' (default is no)
--with-undefined-behavior-sanitizer
enable UndefinedBehaviorSanitizer undefined
behaviour detector, 'ubsan' (default is no)
--with-libs='lib1 ...' link against additional libs (default is no)
--with-system-expat build pyexpat module using an installed expat
library, see Doc/library/pyexpat.rst (default is no)
--with-system-ffi build _ctypes module using an installed ffi library,
see Doc/library/ctypes.rst (default is
system-dependent)
--with-system-libmpdec build _decimal module using an installed libmpdec
library, see Doc/library/decimal.rst (default is no)
--with-decimal-contextvar
build _decimal module using a coroutine-local rather
than a thread-local context (default is yes)
--with-tcltk-includes='-I...'
override search for Tcl and Tk include files
--with-tcltk-libs='-L...'
override search for Tcl and Tk libs
--with-dbmliborder=db1:db2:...
override order to check db backends for dbm; a valid
value is a colon separated string with the backend
names `ndbm', `gdbm' and `bdb'.
--with-doc-strings enable documentation strings (default is yes)
--with-pymalloc enable specialized mallocs (default is yes)
--with-c-locale-coercion
enable C locale coercion to a UTF-8 based locale
(default is yes)
--with-valgrind enable Valgrind support (default is no)
--with-dtrace enable DTrace support (default is no)
--with-libm=STRING override libm math library to STRING (default is
system-dependent)
--with-libc=STRING override libc C library to STRING (default is
system-dependent)
--with-platlibdir=DIRNAME
Python library directory name (default is "lib")
--with-computed-gotos enable computed gotos in evaluation loop (enabled by
default on supported compilers)
--with-ensurepip[=install|upgrade|no]
"install" or "upgrade" using bundled pip (default is
upgrade)
--with-openssl=DIR root of the OpenSSL directory
--with-ssl-default-suites=[python|openssl|STRING]
override default cipher suites string, python: use
Python's preferred selection (default), openssl:
leave OpenSSL's defaults untouched, STRING: use a
custom string, PROTOCOL_SSLv2 ignores the setting,
see Doc/library/ssl.rst
--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2
builtin hash modules, md5, sha1, sha256, sha512,
sha3 (with shake), blake2
Some influential environment variables:
MACHDEP name for machine-dependent library files
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L if you have libraries in a
nonstandard directory
LIBS libraries to pass to the linker, e.g. -l
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if
you have headers in a nonstandard directory
CPP C preprocessor
PROFILE_TASK
Python args for PGO generation task
PKG_CONFIG path to pkg-config utility
PKG_CONFIG_PATH
directories to add to pkg-config's search path
PKG_CONFIG_LIBDIR
path overriding pkg-config's built-in search path
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to .
三、执行如下命令配置安装,我将python安装到:/home/ubuntu/py396,路径下,
./configure --prefix=/home/ubuntu/py396
四、输入如下命令进行编译:
make -j
五、输入如下命令进行安装:
make install
六、执行如下命令,清除编译产生的过程文件:
make clean
七、安装完成!