1、问题描述:
centos 4.3系统,调用 numpy 发生 core dumped,而 centos 6.3正常
Lib/python/python-2.7.3/bin/python
Python 2.7.3 (default, Oct 30 2012, 19:16:39)
[GCC 3.4.5 20051201 (Red Hat 3.4.5-2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Floating point exception (core dumped)
centOS 4.3下 查看动态调用库
ldd /Lib/python/python-2.7.3/bin/python
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000003f0b900000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003f0b300000)
libutil.so.1 => /lib64/libutil.so.1 (0x0000003f0db00000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000003f0b500000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000003f0b000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003f0ae00000)
centOS 6.3下 查看动态调用库,比centOS 4.3下多linux-vdso.so.1,可以看到linux-vdso.so.1,没有与任何实际的文件相对应。这个就是linux用于支持新型系统调用的“虚拟”共享库,
ldd Lib/python/python-2.7.3/bin/python
linux-vdso.so.1 => (0x00007fff265ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000318b200000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000318aa00000)
libutil.so.1 => /lib64/libutil.so.1 (0x000000318de00000)
libm.so.6 => /lib64/libm.so.6 (0x000000318b600000)
libc.so.6 => /lib64/libc.so.6 (0x000000318ae00000)
/lib64/ld-linux-x86-64.so.2 (0x000000318a600000)
2、原因:numpy包是在 centOS 6.3 下编译安装的,导致在 centos4.3下找不到对应的链接库。
3、VDSO机制
linux-vdso.so.1并不存在实际的文件,它只是操作系统生成的一个虚拟动态共享库(Virtual Dynamic Shared Library,VDSO)。因为该共享库不是以一个文件的格式(属于elf文件格式)存在于文件系统中,而是由内核提供的,对用户进程而言是虚拟的。
查看内核版本:
cat /proc/version
Linux version 2.6.32_1-16-0-0 (yuanlinsi@dbl-sat-dev01.dbl01.baidu.com) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #2 SMP Tue Aug 4 10:59:02 CST 2015