programa de 32 bits tem uma dependência em uma biblioteca de 64 bits

1

quando digito ldd helloworld , vejo isso como uma das dependências:

libboost_system.so.1.55.0 => not found

Acontece, no entanto, que esta é uma biblioteca de 64 bits, enquanto helloworld é um programa de 32 bits. Então, o erro de saída que recebo ao tentar executar o aplicativo é:

./sayhelloworld: error while loading shared libraries: libboost_system.so.1.55.0: cannot open shared object file: No such file or directory

O que posso fazer?

Obrigado a todos

    
por Alexandre Lisboa 01.03.2018 / 19:06

1 resposta

2

Programas binários requerem bibliotecas compartilhadas compiladas para a mesma arquitetura de CPU, neste caso i386, arquitetura de 32 bits da Intel. Nas instalações do Ubuntu usando a arquitetura de 64 bits AMD, AMD e Intel, você pode instalar o último, além da arquitetura "nativa".

Preparação

Se você não tiver feito isso, ative a arquitetura "estrangeira" e atualize o índice do repositório de pacotes:

sudo dpkg --add-architecture i386
sudo apt update

Instalação do pacote

libboost_system.so.1.55.0 , a biblioteca compartilhada em questão vem no pacote libboost-system1.55.0 (veja também Como encontro o pacote que fornece um arquivo? ). Você pode pedir ao gerenciador de pacotes para instalar um pacote para uma arquitetura específica se você acrescentar dois pontos ( : ) e o nome da arquitetura:

sudo apt install libboost-system1.55.0:i386
    
por David Foerster 02.03.2018 / 00:05