在Ubuntu 14.04

时间:2016-04-20 12:36:18

标签: python linux ubuntu-14.04 python-3.5

我正在尝试在GCE Ubuntu 14.04 VM上构建Python 3.5.1,并在解压缩文件夹中运行./configure时得到:

checking for the Linux getrandom() syscall... no
checking for the getrandom() function... no

uname -a命令返回:

Linux server.mydomain.com 3.19.0-58-generic #64~14.04.1-Ubuntu SMP Fri Mar 18 19:05:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

我不知道为什么configure无法检测getrandom(),在Python 3.5.1发行文档中它说的是Python解释器will detect and use this function/system call in Linux Kernels above 3.17

我在这里缺少什么?有人有同样的问题吗?

提前感谢您的任何答案。

Danilo的

1 个答案:

答案 0 :(得分:2)

Python用于确定您是否getrandom()的测试程序在这里:https://hg.python.org/cpython/rev/4491bdb6527b/#l3.176

#include <sys/syscall.h>

int main() {
    const int flags = 0;
    char buffer[1];
    int n;
    /* ignore the result, Python checks for ENOSYS at runtime */
    (void)syscall(SYS_getrandom, buffer, sizeof(buffer), flags);
    return 0;
}

如果您尝试在系统上构建该程序,您会得到什么?如果它有效,你的Python应该使用getrandom(),否则你应该从编译器输出看到问题是什么。

编辑:既然我们确实没有SYS_getrandom,我们可以确定问题是什么:您的内核足够新以支持getrandom(),但您的libc } 不是。解决方案是升级您的glibc-dev