о, как-то я занимался этой фигней, и вскоре еще придется, только я уж все забыл, как оно делается, ну да вот и повод вспомнить подвернулся)) там всего несколько пакетов надо было пересобрать, отучив от от всяких юдевов и прочего системд, вот остались команды для сборки:
>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