在Ubuntu 14.04上构buildPython 3.5.1时,检查getrandom()函数将返回no

我试图在GCE Ubuntu 14.04 VM上构buildPython 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

我不明白为什么configuration无法检测到getrandom(),在Python 3.5.1发布文档中,它说Python解释器会在3.17以上的Linux内核中检测和使用这个函数/系统调用

我在这里错过了什么? 任何人都有同样的问题?

在此先感谢您的任何答案。

达尼洛

Python用来确定你是否有getrandom()的测试程序在这里: https : getrandom()

 #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