Crosscompilation¶
Basic references¶
- BuildingCrossCompilers - Debian Wiki.
- EmdebianToolchain - Debian Wiki.
- EmDebian/CrossDebootstrap - Debian Wiki.
- QemuUserEmulation - Debian Wiki.
- software development - How do I build a GCC 4.7 toolchain for cross-compiling? - Raspberry Pi Stack Exchange.
- ARM cross-compiling howto - K's cluttered loft.
- Debian ARM Cross-compile - Manuals.
- How to cross-compile Git for ARM?.
- Allow to compile with Debian/Ubuntu ARM toolchain · Issue #34 · libopencm3/libopencm3.
Basic configuration¶
(0) [20130426 13:37:57] vagrant@vagrant-debian-wheezy:~ $ cat /etc/apt/sources.list.d/emdebian.list
#
# -- Emdebian cross toolchains
#
# deb http://www.emdebian.org/debian/ unstable main
# deb http://www.emdebian.org/debian/ testing main
deb http://www.emdebian.org/debian wheezy main
(0) [20130426 13:38:12] vagrant@vagrant-debian-wheezy:~ $
(0) [20130426 13:38:12] vagrant@vagrant-debian-wheezy:~ $ cat /etc/apt/sources.list.d/squeeze.list
deb http://http.debian.net/debian/ squeeze main contrib non-free
deb-src http://http.debian.net/debian/ squeeze main contrib non-free
(0) [20130426 13:38:44] vagrant@vagrant-debian-wheezy:~ $
Exemplo: git¶
Instalando as dependências do git:
xapt -a armel -m asciidoc comerr-dev cvs cvsps docbook-xml docbook-xsl krb5-multidev libapr1 libaprutil1 libcurl4-gnutls-dev libdbd-sqlite3-perl libdbi-perl libexpat1-dev libgcrypt11-dev libgnutls-dev libgnutls-openssl27 libgnutlsxx27 libgpg-error-dev libidn11-dev libkadm5clnt-mit8 libkadm5srv-mit8 libkdb5-6 libkrb5-dev libldap2-dev libneon27-gnutls libnet-daemon-perl libp11-kit-dev libplrpc-perl librtmp-dev libssh2-1-dev libsvn-perl libsvn1 libtasn1-3-dev libxml2-utils libxslt1.1 libyaml-perl pkg-config sgml-data subversion xmlto xsltproc zlib1g-dev libssl-dev
Tentando compilar com a seguinte instrução:
./configure --build=arm --host=arm-linux-gnueabi
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi install prefix=$(pwd)/../destdir/
Criando um toolchain¶
Primeiro, como root, vamos criar o chroot:
mkdir -p /var/chroot
debootstrap --verbose --arch armel --foreign wheezy /var/chroot/wheezy-armel http://ftp.debian.org/debian
cp /usr/bin/qemu-arm-static /var/chroot/wheezy-armel/usr/bin/
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \
LC_ALL=C LANGUAGE=C LANG=C chroot /var/chroot/wheezy-armel /debootstrap/debootstrap --second-stage
Opcionalmente, dê permissão ao usuário comum:
chown -R vagrant. /var/chroot/wheezy-armel
Como usuário comum:
cd /var/chroot/wheezy-armel
sb2-init -n -m emulate -c /usr/bin/qemu-arm wheezy-armel "arm-linux-gnueabi-gcc"
Referências¶
Script provision-chroot. * Set up sb2 with armel debootstrap - maemo.org - Talk. * Installing scratchbox 1 and 2 for ARM cross-compilation | Felipe Contreras. * MobileRead Wiki - Boox M92 Development with Scratchbox2. * Cross Compile environment using debootstrap and scratchbox2 | Rogerio Moraes. * Using scratchbox2 and Ubuntu 11.10 | Hamilton Vera. * Setting up Scratchbox2 to build software for zubuntu « Executing Gummiworms.