后浪笔记一零二四

脚本语言有其存在的意义

python和rust互为表里,未来可以创造无限可能。

cpython的编译

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$ yum install -y libffi-devel zlib-devel bzip2-devel xz-devel

# 如果yum install zlib-devel时报错,就需要使用如下的编译安装了
# python依赖zlib,否则代码中引用zlib时会报fatal error zlib.h No such file or directory错误
$ wget http://www.zlib.net/zlib-1.2.11.tar.gz
$ tar -xzf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure --shared
$ make test
$ make install
$ cp zutil.h /usr/local/include
$ cp zutil.c /usr/local/include

# 编译openssl静态库
$ wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1w.tar.gz
$ tar -xzf OpenSSL_1_1_1w.tar.gz
$ cd openssl-OpenSSL_1_1_1w
$ ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl no-shared threads
$ make -j16
$ make install

# 编译python
$ wget https://github.com/python/cpython/archive/refs/tags/v3.9.19.tar.gz
$ tar -xzf v3.9.19.tar.gz
$ cd cpython-3.9.19
# gcc编译可以分为四个主要阶段:预处理、编译、汇编和链接
# CPPFLAGS: 指定预处理器(c/c++ PreProcessor)的选项或标志,例如头文件路径(通过 -I 选项指定)、宏定义(通过 -D 选项指定)。
# CFLAGS: 指定C编译器的选项;CXXFLAGS: 指定C++编译器的选项
# LDFLAGS: 指定链接器(c/c++ linker)的选项或标志,例如库文件的搜索路径、需要链接的库以及链接器的行为控制选项。
# CPATH: 指定头文件搜索路径,适用于所有语言。类似于-I选项,但在命令行上用-I给出的任何路径之后使用
# LIBRARY_PATH: 在链接阶段使用的库搜索路径。这类似于-L选项,用来指定链接时需要搜索的库目录
# LD_LIBRARY_PATH: 运行时动态链接器使用的库搜索路径。这个环境变量影响程序在运行时如何找到所需的共享库(.so文件)
# LANG:指定编译器要使用的字符集;LC_ALL:覆盖所有局部化设置,包括字符分类等
# python给vim使用时,must be compiled with --enable-shared (or --enable-framework on macOS)
$ ./configure LDFLAGS="-L/usr/local/openssl/lib -Wl,-rpath,/usr/local/openssl/lib" CPPFLAGS="-I/usr/local/openssl/include" --with-openssl=/usr/local/openssl/  --prefix /home/jiaweicheng/.python39 --enable-shared
$ make -j16
$ make install

$ vim ~/.bashrc
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/jiaweicheng/.python/lib
$ source ~/.bashrc

# 测试: ~/.python/bin/python3 -c "import sysconfig; print(sysconfig.get_config_var( 'INCLUDEPY' ))"
# 编译参数的位置: ./lib/python3.9/config-3.9-x86_64-linux-gnu/Makefile

本文发表于 0001-01-01,最后修改于 0001-01-01。

本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。


上一篇 « 下一篇 »

赞赏支持

请我吃鸡腿 =^_^=

i ysf

云闪付

i wechat

微信

推荐阅读

Big Image