我试图在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
。