Skip to content

Crosscompilation

Basic references

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.

Problemas encontrados