我正在尝试在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的
答案 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
。