错误:ld.so:LD_PRELOAD中的对象'libhugetlbfs.so'无法预加载:忽略

时间:2015-11-24 10:59:06

标签: linux huge-pages

我正在尝试运行一个简单的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发生的。我检查了所有环境变量..无法找到问题..任何消化???

2 个答案:

答案 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