Как я могу создать 32-битный (i386) файл .deb на 64-битной коробке?

#c #ubuntu #32bit-64bit #deb

#c #убунту #32-битный-64-битный #deb

Вопрос:

У меня есть приложения, которые успешно компилируются с помощью переключателя -m32 (в DMD и / или GCC) для создания:

 appname: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked
(uses shared libs), for GNU/Linux 2.6.15, not stripped
 

Исходные пакеты, которые я создал, отлично работают как на 32-разрядной, так и на 64-разрядной Ubuntu для создания соответствующего двоичного файла .debs.

Я хотел бы создать файл i386 .deb на той же 64-разрядной машине, которую я использую для создания 64-разрядного файла .deb.

Возможно ли это, и где мне следует искать инструкции?

Ответ №1:

Ответ зависит от сложности вашей сборки. Когда для сборки достаточно обычных 64-разрядных пользовательских инструментов, просто укажите архитектуру через -a

 debuild -ai386
 

Однако часто бывают случаи, когда это не работает, и в этих случаях вам понадобится pbuilder. pbuilder создает чистую систему Debian / Ubuntu в среде с поддержкой chroot. man pbuilder это хорошее введение. Чтобы начать работу, вам понадобится:

 sudo pbuilder --create --architecture i386
sudo pbuilder --build mypackage.dsc
 

Комментарии:

1. Чтобы создать новый пакет с нуля: pdebuild --architecture i386 в каталоге, который содержит debian/ directory .

Ответ №2:

Это начинается с вызова debuild с опцией -ai386, которая изменит архитектуру, для которой создан пакет.

Конечно, вы должны убедиться, что пакет содержит сборку приложения i386.

Ответ №3:

Вы не делаете ничего, что отличается от создания 64-битного .deb. За исключением того, что вы включаете 32-битную сборку своего приложения.

Управляющий файл определяет архитектуру, поэтому убедитесь, что вы выбрали правильную.

Комментарии:

1. Неправда. Пакеты Debian включают архитектуру пакета, которая явно указана.

2. @Michael, так что это явно указано с параметром, который, как представляется, не имеет документации, какой-либо?

3. На самом деле, структура файлов управления пакетами очень хорошо документирована. Включая параметр архитектуры .

4. @Michael, ну да, я читал другой ответ, в котором упоминается -ai386, и не смог его найти. Указание архитектуры является частью создания пакета deb, независимо от того, используете ли вы amd64 или i386, выбор архитектуры по-прежнему является частью процесса.

5. Точно. И, похоже, это часть процесса, о котором у OP есть вопросы.