Linux 错误:ld.so:object';libhugetlbfs.so';无法从LD_预加载:忽略

Linux 错误:ld.so:object';libhugetlbfs.so';无法从LD_预加载:忽略,linux,huge-pages,Linux,Huge Pages,我正在尝试运行一个简单的malloc程序,以查看我的hugepage环境是否已正确设置。libhugetlbfs仅安装在默认系统目录/usr/local中。操作系统是RHEL6.7。我检查了libhugetlbfs.so是否在/usr/lib64文件夹中。当我使用 HUGETLB\u MORECORE=yes LD\u PRELOAD=libhugetlbfs.so 代码 #include<stdio.h> #include<stdlib.h> int main() {

我正在尝试运行一个简单的malloc程序,以查看我的hugepage环境是否已正确设置。libhugetlbfs仅安装在默认系统目录/usr/local中。操作系统是RHEL6.7。我检查了libhugetlbfs.so是否在/usr/lib64文件夹中。当我使用
HUGETLB\u MORECORE=yes LD\u 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");
   }

 }

很明显,malloc力不是通过hugepage实现的。我检查了所有的环境变量。。找不到问题。。有什么建议吗?

这意味着找不到libhugetlbfs.so

您必须在
LD\u PRELOAD
中指定完整路径:

LD_PRELOAD=/your/path/libhugetlbfs.so
因此,打开控制台并键入

export LD_PRELOAD=/your/path/libhugetlbfs.so

export HUGETLB_MORECORE=yes

./your_binary

我也面临如下错误

ERROR: ld.so: object '/usr/lib64/libjemalloc.so.1' from LD_PRELOAD cannot be preloaded
下面是我解决错误的步骤

使用以下命令转到libjemalloc的路径/usr/lib64和lok*

如果您没有发现系统中没有安装该软件包

  $sudo yum whatprovides libjemalloc*
  $sudo yum install jemalloc-3.6.0-1.amzn2.x86_64

您好,文件libhugetlbfs.so已经存在于/usr/lib64/目录中,该目录也是标准的lib目录。事实上,根据您的建议,已将文件从/usr/lib64复制到/usr/lib。不需要花时间。同样的错误正在出现。嗨。。我得不到“编译库”。我使用yum安装了库。哦。。。在我看到的每个地方,要使用hugepages,在执行过程中都需要使用这个命令“HUGETLB_MORECORE=yes LD_PRELOAD=libhugetlbfs.so./executable”。我不知道在编译过程中如何链接hugepage库。你能给出这个的编译标志吗?在另一个控制台中通过分别导出和执行二进制文件来尝试。。。。同样的错误…不。。。克劳迪奥。。。。。。。它的工作。。。。。。。在编译时,我为编译器调用了-O优化标志,并定期执行它。。。现在开始。。。。我甚至可以看到hugepages被使用。。。。
  #cd /usr/lib64
  #ls | grep libjemalloc
  $sudo yum whatprovides libjemalloc*
  $sudo yum install jemalloc-3.6.0-1.amzn2.x86_64