我正在尝试运行一个简单的malloc程序来查看我的巨页环境是否已正确设置。 libhugetlbfs仅安装在默认系统目录/ usr / local中。操作系统是RHEL 6.7。我检查了libhugetlbfs.so是否在/ usr / lib64文件夹中。当我运行我的代码与
HUGETLB_MORECORE =是LD_PRELOAD = libhugetlbfs.so
代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
double *x;
int y,i;
y = 15000000;
x = (double *)malloc(y*sizeof(double));
if (x != NULL)
{
printf("\nmalloc successful\n");
}
else
{
printf("malloc unsuccesfull");
}
}
输出
**ERROR: ld.so: object 'libhugetlbfs.so' from LD_PRELOAD cannot be preloaded: ignored.**
malloc successful
很明显,malloc dint是使用hugepage发生的。我检查了所有环境变量..无法找到问题..任何消化???
答案 0 :(得分:0)
这意味着找不到libhugetlbfs.so。
您必须在LD_PRELOAD
中指定完整路径:
LD_PRELOAD=/your/path/libhugetlbfs.so
因此,打开控制台并输入
export LD_PRELOAD=/your/path/libhugetlbfs.so
export HUGETLB_MORECORE=yes
./your_binary
答案 1 :(得分:0)
我也遇到了如下错误
ERROR: ld.so: object '/usr/lib64/libjemalloc.so.1' from LD_PRELOAD cannot be preloaded
以下是我的步骤为我解决了错误。
使用以下命令转到路径 /usr/lib64 并找到 libjemalloc*
#cd /usr/lib64
#ls | grep libjemalloc
如果您没有发现系统中没有安装该软件包
$sudo yum whatprovides libjemalloc*
$sudo yum install jemalloc-3.6.0-1.amzn2.x86_64