0

我正在尝试运行一个简单的 malloc 程序来查看我的大页面环境是否已正确设置。libhugetlbfs 仅安装在默认系统目录 /usr/local 中。操作系统是 RHEL 6.7。我检查了 libhugetlbfs.so 是否在 /usr/lib64 文件夹中。当我使用
HUGETLB_MORECORE=yes 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 使用大页面发生。我检查了所有环境变量..找不到问题..任何建议???

4

2 回答 2

0

这意味着找不到 libhugetlbfs.so。

您必须在LD_PRELOAD完整路径中指定:

LD_PRELOAD=/your/path/libhugetlbfs.so

因此,打开控制台并输入

export LD_PRELOAD=/your/path/libhugetlbfs.so

export HUGETLB_MORECORE=yes

./your_binary
于 2015-11-24T12:34:19.070 回答
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
于 2021-05-01T15:53:31.097 回答