В репозиториях Ubuntu есть ряд библиотек, таких как lib32stdc++6
и lib32ncurses5
. Вы можете установить их в 64-битной системе или перейти к установке libstdc++6:i386
и libncurses5:i386
. Мне интересно узнать, в чем разница между двумя типами пакетов.
Какова реальная разница? Почему они оба доступны? Находясь под впечатлением, что libx:i386
- это новый способ ведения дел, всегда ли этот метод предпочтительнее установки варианта lib32x
? Наличие нескольких уже установленных lib32x
и нескольких libx:i386
библиотек также заставляет меня задуматься о том, будет ли хорошей идеей переключиться на пакет только одного типа, заменив их аналогами.
Практическая разница между этими пакетами заключается в том, где расположены библиотеки. В libfoo:i386
библиотеки оказываются в многоархитективных путях, таких как /usr/lib/i386-linux-gnu
, тогда как в lib32foo:amd64
библиотеки заканчиваются в «старых» путях, таких как /usr/lib32
. В отдаленном будущем мы бы избавились от любых lib32foo
пакетов, но мы еще не там. По крайней мере, lib32stdc++6
необходимо для построения gcc-X.Y
на данный момент, потому что он собирает gcc-X.Y-multilib
, который способен поддерживать переключатели, такие как -m32
, для выбора целевой архитектуры (то есть архитектуры результирующего двоичного файла). Без пакетов lib32foo
зависимости сборки gcc-X.Y
пересекают границы архитектуры, и это пока не поддерживается. Есть еще несколько вопросов, которые требуют некоторое время хранить пакеты lib32foo
.