когда я ввожу 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
Что я могу сделать?
Благодарит всех
Программы в двоичном представлении требуют совместно использованных библиотек, скомпилированных для той же архитектуры ЦП, в этом случае 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