Re: Кросскомпиляция на машине x86_64 в i386

2013-10-18 Пенетрантность Dmitrii Kashin
Konstantin Fadeyev jred...@gmail.com writes:

 17 октября 2013 г., 23:29 пользователь Dmitrii Kashin
 free...@freehck.ru написал:

 ядро. Более того, никаким другим способом Вы не сможете иметь в одной
 системе одновременно установленными 32- и 64-разрядные версии GCC.

 Мультиарч не подойдёт?

Нет.

https://wiki.debian.org/Multiarch


pgprdg4kubxye.pgp
Description: PGP signature


Re: Кросскомпиляция на машине x86_64 в i386

2013-10-18 Пенетрантность Артём Н.

On 17.10.2013 21:46, dimas wrote:

о, как-то я занимался этой фигней, и вскоре еще придется, только я уж все
забыл, как оно делается, ну да вот и повод вспомнить подвернулся)) там всего

О, спасибо. Но, конечно, совсем не простой путь. С pbuilder легче.


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/526152ff.8080...@yandex.ru



Re: Кросскомпиляция на машине x86_64 в i386

2013-10-18 Пенетрантность Артём Н.

On 17.10.2013 23:29, Dmitrii Kashin wrote:

dimas dimas...@ya.ru writes:


ради трех пакетов мало того, что изучать pbuilder, так еще и ведро
перебирать, лично мне смысла не было никакого.


Для того, чтобы собирать в чруте пакеты не нужно иметь 32-битное
ядро. Более того, никаким другим способом Вы не сможете иметь в одной
системе одновременно установленными 32- и 64-разрядные версии GCC.

А нафига держать 32-х разрядный GCC, если 64-х разрядный вполне себе может 
генерировать 32-х разрядный код?



--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/526152d3.40...@yandex.ru



Re: Кросскомпиляция на машине x86_64 в i386

2013-10-18 Пенетрантность Dmitrii Kashin
Артём Н. artio...@yandex.ru writes:

 А нафига держать 32-х разрядный GCC, если 64-х разрядный вполне себе
 может генерировать 32-х разрядный код?

Что, правда? Так. Я сейчас пойду читать маны, и у меня предчувствие, что
моя жизнь резко упростится. =)


pgp0ycdODVl4m.pgp
Description: PGP signature


Re: Кросскомпиляция на машине x86_64 в i386

2013-10-18 Пенетрантность Andrey Rahmatullin
On Fri, Oct 18, 2013 at 08:51:52AM +0400, Konstantin Fadeyev wrote:
 Мультиарч не подойдёт?
Как замена бочке?

P.S. У меня уже около двух третей писем в этой рассылке от заскоренных
отправителей приходит. Пора отписываться.

-- 
WBR, wRAR


signature.asc
Description: Digital signature


Re: Кросскомпиляция на машине x86_64 в i386

2013-10-18 Пенетрантность Артём Н.

On 18.10.2013 20:05, Dmitrii Kashin wrote:

Артём Н. artio...@yandex.ru writes:


А нафига держать 32-х разрядный GCC, если 64-х разрядный вполне себе
может генерировать 32-х разрядный код?


Что, правда? Так. Я сейчас пойду читать маны, и у меня предчувствие, что
моя жизнь резко упростится. =)


-march=арх-ра, не?


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52616af1.6050...@yandex.ru



Re: Кросскомпиляция на машине x86_64 в i386

2013-10-18 Пенетрантность dimas
-m32 хватает. нормально собирается, про что я и расписывал тут. но нужен бубен))
так что насчет сильно упростить - не факт


2013-291 21:08 Артём Н. artio...@yandex.ru wrote:
 On 18.10.2013 20:05, Dmitrii Kashin wrote:
  Артём Н. artio...@yandex.ru writes:
 
  А нафига держать 32-х разрядный GCC, если 64-х разрядный вполне себе
  может генерировать 32-х разрядный код?
 
  Что, правда? Так. Я сейчас пойду читать маны, и у меня предчувствие, что
  моя жизнь резко упростится. =)
 
 -march=арх-ра, не?
 
 


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20131018223235.7ac86...@ulf.tvoe.tv



Re: Кросскомпиляция на машине x86_64 в i386

2013-10-18 Пенетрантность Артём Н.

On 18.10.2013 22:32, dimas wrote:

-m32 хватает. нормально собирается, про что я и расписывал тут. но нужен бубен))
так что насчет сильно упростить - не факт

Так не, после того, как собралось с pbuilder - чисто теоретический интерес был: 
почему не собирается и как сделать?

Тут не упрощение, а усложнение...


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52618285.9060...@yandex.ru



Кросскомпиляция на машине x86_64 в i386

2013-10-17 Пенетрантность Артём Н.

Интересует как грязно скомпилировать 32-х битный пакет на 64-х битной машине.
Через pbuilder собрать пакеты получилось, но вопрос остался.

Машина 64-х битная виртуалка.
У меня есть патченые библиотеки.
Я сделал dpkg-buildpackage -uc -us -B -ai386.
Одна собралась под 32. Но в конце ругнулась, что i486-gnu-strip не найден.
Я сделал симлинк на обычный стрип (он поддерживает x32) в /usr/local/bin.
Всё собралось. Установил.
Стал собирать вторую библиотеку.
Не линкуется с первой.
После долгих мучений, я выяснил, что первая библиотека, несмотря на указание 
архитектуры (и установки переменной ARCH=i386, если это на что-то влияет), 
собралась по 64-бита. Но пакет был с суффиксом i386.


Насколько я понимаю, 32-х битный большой проект, который использует CMake, 
вполне себе собирается под 32-бита (ломается при сборке после нескольких 
процентов, но видимо по другим причинам).

Т.е. дело здесь именно в системе сборки пакетов.

1. Почему?
2. Как собрать под 32 бита без pbuilder?


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52601a82.2070...@yandex.ru



Re: Кросскомпиляция на машине x86_64 в i386

2013-10-17 Пенетрантность dimas
о, как-то я занимался этой фигней, и вскоре еще придется, только я уж все
забыл, как оно делается, ну да вот и повод вспомнить подвернулся)) там всего
несколько пакетов надо было пересобрать, отучив от от всяких юдевов и прочего
системд, вот остались команды для сборки:

21:23:01 290 /usr/src/rescue/build$ cat busybox-snapshot-20121124 
make ARCH=i386 CROSS_COMPILE=i486-linux-gnu- CFLAGS=-m32 \
LDEMULATION=elf_i386 busybox

21:23:14 290 /usr/src/rescue/build$ cat lvm2-2.02.95 
./configure --host=i486-linux-gnu --бла-бла-бла \
LDFLAGS=-L /usr/lib/i386-linux-gnu CC=i486-linux-gnu-gcc LD=i486-linux-gnu-ld 
\
CROSS_COMPILE=i486-linux-gnu LDEMULATION=elf_i386 CFLAGS=-m32
make CC=i486-linux-gnu-gcc LD=i486-linux-gnu-ld CROSS_COMPILE=i486-linux-gnu \
LDEMULATION=elf_i386 CFLAGS=-m32 -j2

21:23:47 290 /usr/src/rescue/build$ cat parted-2.3 
./configure --host=i486-linux-gnu --бла-бла-бла \
CC=i486-linux-gnu-gcc LD=i486-linux-gnu-ld CROSS_COMPILE=i486-linux-gnu \
LDEMULATION=elf_i386 CFLAGS=-m32
make CC=i486-linux-gnu-gcc LD=i486-linux-gnu-ld CROSS_COMPILE=i486-linux-gnu \
DEMULATION=elf_i386 CFLAGS=-m32 -j2 install

21:23:52 290 /usr/src/rescue/build$ cat cryptsetup-1.4.3/cryptsetup 
./configure --host=i486-linux-gnu --бла-бла-бла \
LDFLAGS=-L/usr/lib/i386-linux-gnu CC=i486-linux-gnu-gcc LD=i486-linux-gnu-ld \
CROSS_COMPILE=i486-linux-gnu LDEMULATION=elf_i386 CFLAGS=-m32
make CC=i486-linux-gnu-gcc LD=i486-linux-gnu-ld CROSS_COMPILE=i486-linux-gnu \
LDEMULATION=elf_i386 CFLAGS=-m32 -j2

обрати внимание на LDEMULATION и LDFLAGS, они страсть как нужны, без них лезут
какие-то косяки с линковкой.
еще иногда нужен вот такой костыль:

21:27:34 290 /usr/src/rescue/build$ cat malloc_fix 
#!/bin/bash

# workaround to avoid autoconf bug, leading to undefined reference
# with rpl_malloc on rpl_realloc when cross-compiling for i386.
# if ypu build for native architecture, you don't need this

export ac_cv_func_malloc_0_nonnull=yes
export ac_cv_func_realloc_0_nonnull=yes

что касается сборки пакетов через dpkg, заморрочился я с этим только один раз,
но в итоге домучал его, и все собралось как я хотел. правда, пакет я все равно
потом расковырял и накидал бинарей вручную, ибо все это нужно для liveusb
микро-линукса, где городить пакетную систему нет смысла, ибо она собирается-то
толком один раз и надолго))
но суть в том, что пришлось мне всю муть пихать в debian/rules. переправленные
debian/rules и debian/control для cryptsetup 1.4.3 (я хз, где сейчас его взять,
но в wheezy должна быть не сильно новее версия) см. в аттаче.
да, еще помню, что dpkg-buildpackage вызывал через dpkg-architecture.

да, симлинки:
21:40:14 290 /usr/src/rescue/build$ find /usr/bin /bin -type l -iname *i*86*
/usr/bin/i386
/usr/bin/i486-linux-gnu-ar
/usr/bin/i486-linux-gnu-ld
/usr/bin/i486-linux-gnu-nm
/usr/bin/i486-linux-gnu-gcc
/usr/bin/i486-linux-gnu-strip
/usr/bin/i486-linux-gnu-objcopy
/usr/bin/i486-linux-gnu-objdump
почему i486, а не 386? как-то давно я их создал, и так исторически сложилось
почему-то, ну а переименовывать лень было, так с ниим и собирал все нужное.

а вообще в каждом конкретном случае требуется индивидуальный подход и пляски с
бубном. либо нужно собирать патченный кросс-тулчейн, тогда это дело должно
получше автоматизироваться. да, либы собираются, с тем же cryptsetup нормально
все вышло, все 32-битное. после сборки имеет смысл все бинари проверять с
помощью file.

ЗЫ. а еще я умею ведро кросс-компилять через make-kpkg, если интересно. вот с
ведром, кстати, гораааздо проще все.


control
Description: Binary data


rules
Description: Binary data


Re: Кросскомпиляция на машине x86_64 в i386

2013-10-17 Пенетрантность Andrey Rahmatullin
On Thu, Oct 17, 2013 at 09:46:41PM +0400, dimas wrote:
 а вообще в каждом конкретном случае требуется индивидуальный подход и пляски с
 бубном. либо нужно собирать патченный кросс-тулчейн, тогда это дело должно
 получше автоматизироваться. 
Либо не мучать моск и собирать в чруте.
Всё равно пакеты в чруте собирать надо.

-- 
WBR, wRAR


signature.asc
Description: Digital signature


Re: Кросскомпиляция на машине x86_64 в i386

2013-10-17 Пенетрантность dimas
ну, у меня, например, в 64-битном ведре даже отключена поддержка всяких
32-битных штук. ради трех пакетов мало того, что изучать pbuilder, так еще и
ведро перебирать, лично мне смысла не было никакого.
так-то конечно лучше по-хорошему, но когда оно оправдано. а если один бинарь
нужен - можно и извратиться иногда.


2013-291 00:04 Andrey Rahmatullin w...@wrar.name wrote:
 On Thu, Oct 17, 2013 at 09:46:41PM +0400, dimas wrote:
  а вообще в каждом конкретном случае требуется индивидуальный подход и
  пляски с бубном. либо нужно собирать патченный кросс-тулчейн, тогда это
  дело должно получше автоматизироваться. 
 Либо не мучать моск и собирать в чруте.
 Всё равно пакеты в чруте собирать надо.
 


--
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20131017222956.7349f...@ulf.tvoe.tv



Re: Кросскомпиляция на машине x86_64 в i386

2013-10-17 Пенетрантность Andrey Rahmatullin
On Thu, Oct 17, 2013 at 10:29:56PM +0400, dimas wrote:
 ну, у меня, например, в 64-битном ведре даже отключена поддержка всяких
 32-битных штук. 
Сочувствую.

-- 
WBR, wRAR


signature.asc
Description: Digital signature


Re: Кросскомпиляция на машине x86_64 в i386

2013-10-17 Пенетрантность Dmitrii Kashin
dimas dimas...@ya.ru writes:

 ради трех пакетов мало того, что изучать pbuilder, так еще и ведро
 перебирать, лично мне смысла не было никакого.

Для того, чтобы собирать в чруте пакеты не нужно иметь 32-битное
ядро. Более того, никаким другим способом Вы не сможете иметь в одной
системе одновременно установленными 32- и 64-разрядные версии GCC.

 ну, у меня, например, в 64-битном ведре даже отключена поддержка всяких
 32-битных штук.

а Диоген, например, в бочке жил.


pgpkg3P8YV5ik.pgp
Description: PGP signature


Re: Кросскомпиляция на машине x86_64 в i386

2013-10-17 Пенетрантность Konstantin Fadeyev
Мультиарч не подойдёт?

17 октября 2013 г., 23:29 пользователь Dmitrii Kashin
free...@freehck.ru написал:
 dimas dimas...@ya.ru writes:

 ради трех пакетов мало того, что изучать pbuilder, так еще и ведро
 перебирать, лично мне смысла не было никакого.

 Для того, чтобы собирать в чруте пакеты не нужно иметь 32-битное
 ядро. Более того, никаким другим способом Вы не сможете иметь в одной
 системе одновременно установленными 32- и 64-разрядные версии GCC.

 ну, у меня, например, в 64-битном ведре даже отключена поддержка всяких
 32-битных штук.

 а Диоген, например, в бочке жил.



-- 
Константин Фадеев