Re: Кросскомпиляция на машине x86_64 в i386
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
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
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
Артём Н. artio...@yandex.ru writes: А нафига держать 32-х разрядный GCC, если 64-х разрядный вполне себе может генерировать 32-х разрядный код? Что, правда? Так. Я сейчас пойду читать маны, и у меня предчувствие, что моя жизнь резко упростится. =) pgp0ycdODVl4m.pgp Description: PGP signature
Re: Кросскомпиляция на машине x86_64 в i386
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
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
-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
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
Интересует как грязно скомпилировать 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
о, как-то я занимался этой фигней, и вскоре еще придется, только я уж все забыл, как оно делается, ну да вот и повод вспомнить подвернулся)) там всего несколько пакетов надо было пересобрать, отучив от от всяких юдевов и прочего системд, вот остались команды для сборки: 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
On Thu, Oct 17, 2013 at 09:46:41PM +0400, dimas wrote: а вообще в каждом конкретном случае требуется индивидуальный подход и пляски с бубном. либо нужно собирать патченный кросс-тулчейн, тогда это дело должно получше автоматизироваться. Либо не мучать моск и собирать в чруте. Всё равно пакеты в чруте собирать надо. -- WBR, wRAR signature.asc Description: Digital signature
Re: Кросскомпиляция на машине x86_64 в i386
ну, у меня, например, в 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
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
dimas dimas...@ya.ru writes: ради трех пакетов мало того, что изучать pbuilder, так еще и ведро перебирать, лично мне смысла не было никакого. Для того, чтобы собирать в чруте пакеты не нужно иметь 32-битное ядро. Более того, никаким другим способом Вы не сможете иметь в одной системе одновременно установленными 32- и 64-разрядные версии GCC. ну, у меня, например, в 64-битном ведре даже отключена поддержка всяких 32-битных штук. а Диоген, например, в бочке жил. pgpkg3P8YV5ik.pgp Description: PGP signature
Re: Кросскомпиляция на машине x86_64 в i386
Мультиарч не подойдёт? 17 октября 2013 г., 23:29 пользователь Dmitrii Kashin free...@freehck.ru написал: dimas dimas...@ya.ru writes: ради трех пакетов мало того, что изучать pbuilder, так еще и ведро перебирать, лично мне смысла не было никакого. Для того, чтобы собирать в чруте пакеты не нужно иметь 32-битное ядро. Более того, никаким другим способом Вы не сможете иметь в одной системе одновременно установленными 32- и 64-разрядные версии GCC. ну, у меня, например, в 64-битном ведре даже отключена поддержка всяких 32-битных штук. а Диоген, например, в бочке жил. -- Константин Фадеев