ОШИБКА: ld.so: объект 'libhugetlbfs.so' из LD_PRELOAD не может быть предварительно загружен: игнорируется

Я пытаюсь запустить простую программу 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 происходит с использованием огромной страницы. Я проверил все переменные среды .. не смог найти проблему .. какие-либо предложения ???


person Srinivasan Gunasekaran    schedule 24.11.2015    source источник


Ответы (2)


Это означает, что libhugetlbfs.so не найден.

Вы должны указать в LD_PRELOAD полный путь:

LD_PRELOAD=/your/path/libhugetlbfs.so

Поэтому откройте консоль и введите

export LD_PRELOAD=/your/path/libhugetlbfs.so

export HUGETLB_MORECORE=yes

./your_binary
person Claudio    schedule 24.11.2015
comment
Привет, файл libhugetlbfs.so уже существует в каталоге / usr / lib64 /, этот каталог также является стандартным каталогом lib. Фактически, согласно вашему предложению, скопировал файл из / usr / lib64 в / usr / lib. его не берут. такая же ошибка возникает. - person Srinivasan Gunasekaran; 24.11.2015
comment
Привет .. я не получил компиляцию библиотеки. Я установил библиотеку с помощью yum. - person Srinivasan Gunasekaran; 24.11.2015
comment
о ... везде, где я это вижу, для использования огромных страниц необходимо использовать эту команду во время выполнения HUGETLB_MORECORE = yes LD_PRELOAD = libhugetlbfs.so ./executable. Я не знаю, как связать огромную библиотеку страниц во время компиляции. Вы можете указать для этого флаг компиляции ?? - person Srinivasan Gunasekaran; 24.11.2015
comment
Пробовал на другой консоли, экспортировав и выполнив двоичный файл отдельно .... та же ошибка ..... - person Srinivasan Gunasekaran; 24.11.2015
comment
Нет ... Клаудио ....... он работает ....... во время компиляции я вызвал флаги оптимизации -O для компилятора и регулярно выполнял его ... теперь он работает .... я даже мог видеть используются огромные страницы .... - person Srinivasan Gunasekaran; 24.11.2015

Я также столкнулся с ошибкой, как показано ниже

ERROR: ld.so: object '/usr/lib64/libjemalloc.so.1' from LD_PRELOAD cannot be preloaded

Ниже мои шаги разрешили ошибку для меня.

Перейдите по пути / usr / lib64 и lok для libjemalloc, используя следующие команды *

  #cd /usr/lib64
  #ls | grep libjemalloc

если вы не обнаружите, что этот пакет не установлен в вашей системе

  $sudo yum whatprovides libjemalloc*
  $sudo yum install jemalloc-3.6.0-1.amzn2.x86_64
person Santosh Garole    schedule 01.05.2021