Как я могу установить 32- и 64-разрядные версии одного и того же пакета -dev?

11

Я пытаюсь установить libsqlite3-devдля обоих i386и amd64на одной машине Ubuntu 12.04. Я занимаюсь разработкой приложения, использующего sqlite3, и хочу скомпилировать и протестировать как 32-битные, так и 64-битные версии.

Тем не менее, похоже, что libsqlite3-dev:i386пакет несовместим с тем libsqlite3-dev:amd64, что он aptпостоянно удаляет один, когда я устанавливаю другой.

Есть ли способ установить оба в одной системе?

Wim
источник

Ответы:

5

Вы не можете установить оба пакета -dev в одну и ту же систему одновременно. Вы можете установить только один или другой, так как они содержат одни и те же файлы. Multi-arch не включает поддержку кросс-компиляции, что вы и пытаетесь сделать. Если вы установите :i386версию пакета разработки sqlite и соберетесь с помощью 64-битного компилятора, вы почти наверняка получите неработающую сборку.

Лучше всего скомпилировать в 32-битном chroot или VM, чтобы собрать 32-битную версию.

Добей
источник
Заголовочные файлы действительно находятся в обоих пакетах, но их содержимое идентично. Более того , для других -devпакетов , таких как , zlib1gкоторые также имеют общие (и идентичные файлы), то есть возможность установить обе версии одновременно.
Вим
1
Я просто принудительно установил оба пакета, это ничего не сломало, и теперь я могу собрать (и запустить правильно) обе версии. Это просто случай, когда сопровождающий пакета объявляет конфликт там, где его нет на самом деле?
Вим
0

Лично я не считаю принудительные установки даже в крайнем случае. Я думаю, вы можете найти pbuilder весьма полезным. Вот HOWTO для этого. Вы даже можете установить разные дистрибутивы для этой цели и создать сценарий процесса сборки для разных целей одновременно.

http://ubuntuforums.org/showthread.php?t=206382

Таким образом, вы можете даже удалить все пакеты dev. Они устанавливаются во временную установку chroot.


источник