ld не может найти существующий 32-разрядный libm

Я только публикую после исчерпания всех других ответов, которые я могу найти в google. Я все еще не могу понять свою проблему. Я пытаюсь использовать g ++ для компиляции в 32-разрядной версии на компьютере Red Hat. Это моя команда:

BITS=32 OS=`uname -s` g++ -D$OS -O3 -Wall -pipe -m$BITS -c *.cpp 

Но компоновщик не может найти библиотеку:

 /usr/bin/ld: cannot find -lm collect2: ld returned 1 exit status 

Но … 32-bit libm.so существует в обычном месте.

 >file /usr/lib/libm.so /usr/lib/libm.so: symbolic link to `../../lib/libm.so.6' >file /lib/libm.so.6 /lib/libm.so.6: symbolic link to `libm-2.12.so' >file /lib/libm-2.12.so /lib/libm-2.12.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped 

Я пробовал простые вещи, например, проверил, что / usr / lib по-прежнему фактически указан в LD_LIBRARY_PATH, и я попытался добавить -lm в команду g ++.

Все эти пакеты glibc установлены (glibc предоставляет libm.so и libm.a):

 compat-glibc.x86_64 1:2.5-46.2 compat-glibc-headers.x86_64 1:2.5-46.2 glibc.i686 2.12-1.132.el6 glibc.x86_64 2.12-1.132.el6 glibc-common.x86_64 2.12-1.132.el6 glibc-devel.i686 2.12-1.132.el6 glibc-devel.x86_64 2.12-1.132.el6 glibc-headers.x86_64 2.12-1.132.el6 glibc-utils.x86_64 2.12-1.132.el6 

Я также наткнулся на предложение:

 >readelf -a /usr/lib/libm.so | grep PATH 

но он ничего не выводит.

Любые другие мысли или идеи? Можно ли получить жалобу от компоновщика, когда что-то еще не так? Любой ответ очень ценится.

  • configure не удалось из-за того, что для получения более подробной информации см. `config.log '
  • Ошибка при создании snipersim: «перемещение R_X86_64_32S против` .rodata.str1.1 'не может использоваться при создании общего объекта; перекомпилировать с -fPIC "
  • GCC / G ++ компилирует код в общую библиотеку вместо исполняемого файла
  • Как установить g ++ 4.8 для установки по умолчанию после установки?
  • Как мы можем установить devtoolset-4.0 на CentOS 6.7
  • Как установить g ++ 4.7.2 и c ++ 11 на CentOS 5.x?
  • Где g ++ хранит скомпилированные источники?
  • установить значение по умолчанию g ++ на CentOS?
  • One Solution collect form web for “ld не может найти существующий 32-разрядный libm”

    Ну, я глупый. Это действительно был – --static вариант в моей команде связывания. Вместо статических библиотек я избавился от --static , обработал некоторые ошибки, связанные с кодом, и он правильно компилируется. Спасибо за ответы.

    Linux и Unix - лучшая ОС в мире.