- Вопрос или проблема
- Неразрешенные проблемы
- Устанавливаемые вместе пакеты для исполняемых файлов
- Ответ или решение
- Установка build-essential:i386 на Debian 7.9 x64
- 1. Подготовка системы
- 2. Добавление архитектуры i386
- 3. Установка необходимых зависимостей
- 4. Установка build-essential:i386
- 5. Проблемы с зависимостями
- 6. Примечания к установке
- Заключение
Вопрос или проблема
Я на Debian 7.9 (wheezy) x64 и хотел бы установить build-essential:i386
.
Я уже добавил i386
в dpkg --architecture
, обновил aptitude
и успешно установил java-jdk-1.6:i386
.
Кстати, как бы я ни пытался, build-essential
систематически генерирует ошибку зависимости с:
apt-get install build-essential:i386
Зависимость: dpkg-dev:i386 (>= 1.13.5)
E: Невозможно исправить проблемы, у вас есть зависшие испорченные пакеты...
Если кто-то имеет идею… Спасибо.
Также я нашел это на почтовых списках Debian – Re: cross-build-essential
Скажем, я хочу иметь установленный build-essential для i386 на amd64. Я мог бы установить build-essential:i386, заменив gcc/g++:amd64 на gcc/g++:i386. Разве это не обеспечит меня всем необходимым для кросс-компиляции для i386?
В этом случае, да, потому что вы можете запускать код x86 на CPU AMD64 или Intel 64. Хотя вы действительно будете заменять gcc-4.7:amd64 и т.д. на gcc-4.7:i386 и т.д., так как пакеты не могут быть установлены вместе с собой.
Это правда?
Ну, дело в том, что вам на самом деле не нужен build-essential:i386 на системе amd64, в зависимости от того, что вы хотите скомпилировать, вам могут потребоваться libpam-dev:i386 или другие 32-битные библиотеки -dev, но вы должны использовать 64-битные инструменты, даже для генерации 32-битного кода, в основном потому, что они должны, в теории, работать быстрее … у них доступ к большему объему памяти …
Да, это правда, что вы не можете установить build-essential:i386
и build-essential:amd64
одновременно. Это потребовало бы наличия двух экземпляров некоторых исполняемых файлов (например, gcc
), и это не поддерживается Спецификацией Multiarch:
Неразрешенные проблемы
Устанавливаемые вместе пакеты для исполняемых файлов
Согласованная установка исполняемых файлов потенциально могла бы сделать возможным повторное использование одного и того же образа диска на системах нескольких архитектур без модификации. Это могло бы быть реализовано поверх multiarch с использованием архитектурно-квалифицированных путей для исполняемых файлов, но потребовало бы дополнительного механизма (например, поддержки ядра или символьных ссылок во время загрузки), чтобы реализовать управление PATH.
Ответ или решение
Установка build-essential:i386
на Debian 7.9 x64
Для установки пакета build-essential:i386
на систему Debian 7.9 (Wheezy) с архитектурой x64 необходимо соблюсти несколько условий и шагов. В данном ответе мы подробно рассмотрим процесс, включая решение возможных зависимостей и проблем, которые могут возникнуть.
1. Подготовка системы
Перед началом установки убедитесь, что ваша система обновлена:
sudo apt-get update
sudo apt-get upgrade
2. Добавление архитектуры i386
Убедитесь, что вы добавили поддержку архитектуры i386. Для этого выполните следующую команду:
sudo dpkg --add-architecture i386
После этого обновите список пакетов:
sudo apt-get update
3. Установка необходимых зависимостей
Для установки build-essential:i386
могут потребоваться дополнительные 32-битные библиотеки и пакеты. В диагностическом сообщении о зависимостях указано, что отсутствует пакет dpkg-dev:i386
. Установите его с помощью команды:
sudo apt-get install dpkg-dev:i386
Если установка данного пакета завершится неудачей из-за отсутствия других зависимостей, ознакомьтесь с сообщениями об ошибках и установите необходимые пакеты по аналогии.
4. Установка build-essential:i386
После успешной установки всех необходимых зависимостей можно приступать к установке самого пакета:
sudo apt-get install build-essential:i386
Обратите внимание на то, что при установке build-essential:i386
вы не можете одновременно иметь установленные пакеты build-essential:amd64
. Это связано с архитектурной несовместимостью некоторых исполняемых файлов.
5. Проблемы с зависимостями
В случае возникновения ошибок связанных с "held broken packages" или зависимостями, выполните следующую команду для поиска и устранения поломанных пакетов:
sudo apt-get install -f
Если это не решит проблему, попробуйте удалить конфликты следующими командами:
sudo apt-get remove <broken-package-name>
Затем повторите попытку установки.
6. Примечания к установке
Учитывайте, что для кросс-компиляции и разработки в 32-битной среде, возможно, вам необходимо устанавливать не только build-essential:i386
, но и другие соответствующие 32-битные библиотеки, такие как libpam-dev:i386
. Часто для разработчика более целесообразно использовать 64-битные инструменты, так как они работают быстрее и могут использовать больше памяти.
Заключение
Установка build-essential:i386
на Debian 7.9 x64 требует внимательного подхода к управлению зависимостями и архитектурным особенностям. Соблюдение вышеприведённых шагов и рекомендаций поможет вам успешно завершить установку. Если же возникнут дополнительные трудности, рекомендую обратиться к документации или сообществу Debian для получения более детальной помощи.
Ваши усилия по установке инструментов разработки в 32-битной среде откроют новые возможности в кросс-компиляции и разработке под разные архитектуры.