Eu me deparo com esse erro quando tento testar a compilação de um programa muito simples:
#ifdef __cplusplus
extern "C"
#endif
int
main ()
{
return 0;
}
E recebi a seguinte mensagem de erro se eu compilar usando g + +:
g++ -o conftest -I/opt/include -L/opt/lib -Wl,--library-path=opt/lib testconftest.cpp
/opt/bin/ld: skipping incompatible /lib/libm.so.6 when searching for /lib/libm.so.6
/opt/bin/ld: cannot find /lib/libm.so.6
/opt/bin/ld: cannot find /lib/libmvec.so.1
Mas a compilação passará pelo gcc:
gcc -o conftest -I/opt/include -L/opt/lib -Wl,--library-path=opt/lib testconftest.cpp
Note que o sistema é um híbrido de 32 bits e 64 bits, todos os programas de 32 bits e libararies estão em / lib, / bin, / sbin etc. Todos os programas e liberações do 64bits estão em / opt / lib, / opt / bin, opt / sbin, etc. Eu sei que o /lib/libm.so.6 será a versão errada e a versão corrigida está em / opt / lib. Além disso, gcc, g ++, ld são todos 64bits e nas subpastas / opt, e compilaram com sucesso outros programas muito complicados usando o gcc.
O arquivo /lib/libm.so.6 é um link simbólico para /lib/libm-2.6.1.so; O arquivo /opt/lib/lim.so.6 é um link simbólico para /opt/lib/libm-2.22.so*
file /opt/lib/libm-2.22.so
/opt/lib/libm-2.22.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, for GNU/Linux 2.6.32, stripped
file /lib/libm-2.6.1.so
/lib/libm-2.6.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.8, stripped
g++ --version
g++ (OpenWrt GCC 4.8.5) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.