Estou apenas postando depois de esgotar todas as outras respostas que encontrei no google. Eu ainda não consigo descobrir meu problema. Eu tento usar g + + para compilar em 32 bits em uma máquina da Red Hat. Este é o meu comando:
BITS=32
OS='uname -s'
g++ -D$OS -O3 -Wall -pipe -m$BITS -c *.cpp
Mas o vinculador não consegue encontrar uma biblioteca:
/usr/bin/ld: cannot find -lm
collect2: ld returned 1 exit status
Mas ... o libm.so de 32 bits existe no lugar habitual.
>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
Eu tentei o material simples, como verificado que o / usr / lib ainda está listado no LD_LIBRARY_PATH, e eu tentei adicionar o -lm ao comando g ++.
Estes são todos os pacotes glibc instalados (o glibc fornece libm.so e 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
Também me deparei com uma sugestão para executar:
>readelf -a /usr/lib/libm.so | grep PATH
mas não produz nada.
Quaisquer outros pensamentos ou ideias? É possível obter uma reclamação do vinculador quando algo está errado? Qualquer resposta é muito apreciada.