我使用polybench内核。在polybench.c中,代码有如下行:
int ret = posix_memalign (&new, 32, num);
此行使lli解释器出现问题。我尝试使用malloc,但我有同样的错误
LLVM ERROR: Tried to execute an unknown external function: posix_memalign
在没有此问题的情况下是否可以使用其他功能?
答案 0 :(得分:0)
听到posix_memalign()
被标准化为POSIX的一部分而不是标准C的一部分,您不会感到惊讶。因此,提供该功能不是符合C实现的要求。另一方面,作为POSIX的一部分, 广泛可用。
malloc()
承诺为任何类型的对象返回一个指向内存的指针。我不确定你为什么要确保更强的对齐要求,但你最好的选择是aligned_alloc()
功能,这是自C2011以来的标准C.如果您的C库符合C2011,那么您可以用
posix_memalign()
来电
#include <stdlib.h>
#include <errno.h>
// ...
new = aligned_alloc(32, num);
int ret = (new ? 0 : errno);
如果您还没有aligned_alloc()
,那么您的实施可能会提供其他选择,但它们都不是标准的。