On Fri, 24 Feb 2012 08:23:20 +0100 Svante Signell <svante.signell@telia.com> wrote: > If I succeed with a cross build, it would be nice to get a .deb package > to copy to the target box and dpkg -i there! dpkg-buildpackage -a$arch > Populating sysroot is not > important, except for creating files to install on the target box if deb > creation is not possible. To me debootstrap and multistrap are creating > a (target) base system for use in a chroot. That wouldn't work cross-OS > would it, at least without copying the files to the target and reboot > into the target? The output of debootstrap or multistrap needs to be unpacked onto the appropriate device, the packages then need to be configured on-device. That can happen in a chroot if there is a secondary way to boot the device (initrd etc.). That way, both debootstrap and multistrap can and do work cross-architecture. Having a .deb doesn't help you there, it still needs to be configured (especially for libraries) and configuration cannot happen cross-architecture because it involves executing the foreign architecture binaries on the final system. > > > > With cross-build dpkg-support: > > > ============================== > > > Set up where the cross tools and target headers, libraries and > > > executables are located. > > > cd package > > > DEB_BUILD_GNU_TYPE=$BUILD DEB_HOST_GNU_TYPE=$TARGET dpkg-buildpackage -b > > > That will create .debs to be installed on the target box or in $SYSROOT. > > > > Actually, not all packages support cross compilation, you might need > > to check, proper way would be by setting -a$ARCH flag. So, > > dpkg-buildpackage -b -ahurd-i386 (+extra flags) > > Haven't tried yet. How is the cross-build environment found by > dpkg-buildpackage? debian/rules can contain some explicit support, packages using autotools will generally pick up --build and --host, compilers use other commands like --target. A lot of packages use pkg-config which itself is normally handled by the toolchain / supporting packages like dpkg-cross. Don't do thing MultiArch yet for cross-compilation, it isnt't ready. Use the old dpkg-cross method using a frontend like xapt to install all the foreign architecture packages as -$arch-cross packages. Use the -m option to xapt to cope with the currently incomplete MultiArch transition. -- Neil Williams ============= http://www.linux.codehelp.co.uk/
Attachment:
pgpEQfVpIWqR0.pgp
Description: PGP signature