Como @bersh astutely points nos comentários , você parece estar misturando bibliotecas que foram compiladas para arquiteturas diferentes (32 bits versus 64 bits). Nas bibliotecas de 32 bits do Fedora, vá em /usr/lib
, enquanto as bibliotecas de 64 bits vão em /usr/lib64
. Você pode se convencer disso com alguns exemplos.
Exemplo
Vamos escolher uma das bibliotecas de compartilhamento para o resolvedor de DNS, /usr/lib/libresolv-2.17.so
. Podemos ver que é parte de um RPM de 32 bits.
$ rpm -qf /usr/lib/libresolv-2.17.so
glibc-2.17-20.fc19.i686
Você também pode ver que a biblioteca é um arquivo com cabeçalho ELF de 32 bits.
$ file /usr/lib/libresolv-2.17.so
/usr/lib/libresolv-2.17.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=0xeee8b9e6cb49f8dd64059cc158ce2c55f8c6df5b, for GNU/Linux 2.6.32, not stripped
Portanto, é necessário ter cuidado ao compilar seu software para garantir que você tenha as bibliotecas apropriadas no local (32 e 64), bem como os arquivos de cabeçalho correspondentes. No Fedora (e em todas as distros baseadas no Red Hat) os pacotes são nomeados assim:
- 32 bits - libdb-5.3.21-11.fc19.i686
- 64 bits - libdb-5.3.21-11.fc19.x86_64
- arquivos de cabeçalho de 32 bits - libdb-devel-5.3.21-11.fc19.i686
- arquivos de cabeçalho de 64 bits - libdb-devel-5.3.21-11.fc19.x86_64
Sua biblioteca, libdb
Se você perceber que o arquivo da biblioteca está disponível nas duas arquiteturas. Dada a saída do seu pacote kernel
sendo x64, eu suponho que você pretendia instalar as versões de 64 bits das bibliotecas.
Além disso, uma vez que você está tentando compilar, você também vai querer instalar os arquivos de cabeçalho para sua arquitetura.
$ rpm -qf /usr/lib/libdb-5.3.so
libdb-5.3.21-11.fc19.i686
$ rpm -qf /usr/lib64/libdb-5.3.so
libdb-5.3.21-11.fc19.x86_64
Como sei qual pacote instalar?
Se você ver que suas compilações estão chamando por arquivos que você não tem, então você pode usar repoquery
para descobrir que pacote (s) fornece vários arquivos assim:
$ repoquery -f '*/libdb-5.3.so'
libdb-0:5.3.21-11.fc19.x86_64
libdb-0:5.3.21-11.fc19.i686