python 可执行文件大_为什么 python3.6 的动态链接库比 python2.7 的可执行文件大了很多?...

我的机器是 ubuntu 16.04LTS, python2.7 和 python3.6 都是 apt-get 安装的.

python2.7 的可执行文件的体积是 3.4M :

bash-4.3$ ls -lh `which python2.7`

-rwxr-xr-x 1 root root 3.4M Nov 13 03:46 /usr/bin/python2.7

python3.6 的可执行文件只有 18kb,它是动态链接的,python3.6 的动态链接库的大小是 12M:

bash-4.3$ ls -lh `which python3.6`

-rwxr-xr-x 2 root root 18K May 5 2018 /usr/local/bin/python3.6

bash-4.3$ ls -lh /usr/local/lib/libpython3.6m.so.1.0

-r-xr-xr-x 1 root root 12M May 5 2018 /usr/local/lib/libpython3.6m.so.1.0

请问为什么 python3.6 的动态链接库这么大?比 2.7 的可执行文件还大了这么多?这里面都是什么?

最后补充一些无关信息,供大家参考:

我用pmap检查了 python3.6 启动后的地址空间,libpython3.6m.so.1.0 在其中只占据了大概 5M 的的地址空间(2668k + 2044k + 408k):

00007f15ce7c5000 2668 r-x-- 0000000000000000 008:00001 libpython3.6m.so.1.0

00007f15cea60000 2044 ----- 000000000029b000 008:00001 libpython3.6m.so.1.0

00007f15cec5f000 12 r---- 000000000029a000 008:00001 libpython3.6m.so.1.0

00007f15cec62000 408 rw--- 000000000029d000 008:00001 libpython3.6m.so.1.0

两个版本的 python 运行起来之后,pmap -d的汇总结果分别是:

3.6 版本:

mapped: 24496K writeable/private: 3424K shared: 28K

2.7 版本:

mapped: 31284K writeable/private: 3276K shared: 28K

可见 python3.6 的虚存占用反而小一点儿(24496 <3 1284),我试着找了下原因(现在已经跑题了),对比两个版本被pamp的输出(这儿就不贴出来了,太长了),发现 python3.6 的地址空间里找不到 2.7 里原有的两个系统动态库了,分别是:libreadline 和 libtinfo .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值