32-разрядная программа имеет зависимость от 64-разрядной библиотеки

когда я ввожу ldd helloworld Я получаю это как одну из зависимостей:

libboost_system.so.1.55.0 => not found

Оказывается, тем не менее, что это - 64-разрядная библиотека тогда как helloworld 32-разрядная программа. Затем ошибка на выходе, которую я получаю при попытке запустить приложение:

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

Что я могу сделать?

Благодарит всех

1
задан 1 March 2018 в 21:34

1 ответ

Программы в двоичном представлении требуют совместно использованных библиотек, скомпилированных для той же архитектуры ЦП, в этом случае i386, 32-разрядная архитектура Intel. На установках Ubuntu с помощью amd64, 64-разрядная архитектура AMD и Intel, можно установить последнего в дополнение к "собственной" архитектуре.

Подготовка

Если Вы не сделали так, включаете "внешнюю" архитектуру и обновляете индекс хранилища пакетов:

sudo dpkg --add-architecture i386
sudo apt update

Установка пакета

libboost_system.so.1.55.0, общая рассматриваемая библиотека существует пакета libboost-system1.55.0 (см. также, Как я нахожу пакет, который обеспечивает файл?). Можно попросить, чтобы диспетчер пакетов установил пакет для определенной архитектуры, при добавлении двоеточия (:) и название архитектуры:

sudo apt install libboost-system1.55.0:i386
2
ответ дан 7 December 2019 в 13:26

Другие вопросы по тегам:

Похожие вопросы: