Installing Emdebian ARM Cross Toolchain in Debian

I had previously installed Sourcery G++ ARM Linux toolchain in Ubuntu to build some software running in Debian, but I encountered some issues with some libraries (libavg) that use gethostbyname in static libraries without any easy way to make it dynamic. In that case, the library in the rootfs and cross-compiler must match.  So I decided to install Debian Squeeze (6.0.3) and the corresponding cross-toolchain by Emdebian (short for Embedded Debian).

First to use this toolchain, add the URL to get Emdebian packages to /etc/apt/sources.list:

#
# — Emdebian cross toolchains
#
deb http://www.emdebian.org/debian/ squeeze main

Then install Emdebian public key:

apt-get install emdebian-archive-keyring
apt-get update

If you don’t install the key, you’ll get the following error:

W: GPG error: http://www.emdebian.org squeeze Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY B5B7720097BB3B58

Search and install packages for the architecture that you need, in this case ‘armel’:

apt-cache search armel

This command will return a long list of armel packages.
Install the relevant package (you can check the version you want in the list returned above):

apt-get install linux-libc-dev-armel-cross
apt-get install libc6-armel-cross libc6-dev-armel-cross
apt-get install binutils-arm-linux-gnueabi
apt-get install gcc-4.4-arm-linux-gnueabi
apt-get install g++-4.4-arm-linux-gnueabi

The ARM toolchain is now installed:

 # arm-linux-gnueabi-gcc -v
Using built-in specs.
Target: arm-linux-gnueabi
Configured with: ../src/configure -v –with-pkgversion=’Debian 4.4.5-8′ –with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs –enable-languages=c,c++,fortran,objc,obj-c++ –prefix=/usr –program-suffix=-4.4 –enable-shared –enable-multiarch –enable-linker-build-id –with-system-zlib –libexecdir=/usr/lib –without-included-gettext –enable-threads=posix –with-gxx-include-dir=/usr/arm-linux-gnueabi/include/c++/4.4.5 –libdir=/usr/lib –enable-nls –enable-clocale=gnu –enable-libstdcxx-debug –enable-objc-gc –disable-sjlj-exceptions –enable-checking=release –program-prefix=arm-linux-gnueabi- –includedir=/usr/arm-linux-gnueabi/include –build=i486-linux-gnu –host=i486-linux-gnu –target=arm-linux-gnueabi –with-headers=/usr/arm-linux-gnueabi/include –with-libs=/usr/arm-linux-gnueabi/lib
Thread model: posix
gcc version 4.4.5 (Debian 4.4.5-8)

If you need to install more pre-built ARMEL libraries, you’ll need to install xapt and dpkg-cross:

apt-get install pdebuild-cross dpkg-cross

Finally, to install an ARMEL library (e.g. libpng12-0), run xapt as follows:


Most of the instructions come from http://wiki.debian.org/EmdebianToolchain#Get_the_binaries for Debian Lenny.

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.

Support CNX Software - Donate via PayPal, become a Patron on Patreon, or buy review samples
Subscribe
Notify of
guest
15 Comments
oldest
newest most voted
kurky18
kurky18
8 years ago

Thank you for this tutorial.

It helped me a lot.
But I have troubles retrieving libcv2.1 for arm.
I need to compile a program for ARM and using opencv for arm.
When I do : xapt -a armel libcv2.1 it says some package are not installed (ex libcv2.1:i386).
I’ve got Linux Mint 12 Lisa 64 bit.

Any tips or hints? Thanks!

kurky18
kurky18
8 years ago

@Jean-Luc Aufranc (CNXSoft) Thank you for the reply. Are you running on Debian 64bits? I’m on Linux Mint 12 64bits. Here it’s what i got : libcv2.1:i386 : Depends: libc6:i386 (>= 2.4) but it is not going to be installed Depends: libgcc1:i386 (>= 1:4.1.1) but it is not going to be installed Depends: liblapack3gf:i386 but it is not going to be installed Depends: libstdc++6:i386 (>= 4.1.1) but it is not going to be installed Depends: zlib1g:i386 (>= 1:1.1.4) but it is not going to be installed I ‘ve got pdebuild (2.2.18) and xapt (2.2.18). Also, I can’t use “sudo /usr/share/pdebuild-cross/xapt… Read more »

kurky18
kurky18
8 years ago

@ cnxsoft
Yeah! It’s seems to be working
Thank you for the help 🙂

quintusfelix
quintusfelix
8 years ago

Hi!

I tried to install apt-get install gcc-4.4-arm-linux-gnueabi and apt-get install g++-4.4-arm-linux-gnueabi, but i got an error.
gcc-4.4-arm-linux-gnueabi depends on cpp-4.4-arm-linux-gnueabi (= 4.4.5-8) but shouldn’t be installed.
If i try to install cpp-4.4-arm-linux-gnueabi directly, it says “depends on libgmp3c2 but it is not installable.
Same with g++-4.4-arm-linux-gnueabi.

Any tips? Thanks!

rmunoz
8 years ago

@quintusfelix You need to add a squeeze repository to your sources list

cnxsoft
7 years ago

FYI. I tried to install it on Debian Wheezy, and I had the same problem as @quintusfelix . The solution provided by @rmunoz worked fine for me. Thanks.

Albert
Albert
7 years ago

when i try to install gcc-4.4-arm-linux-gnueabi with the command sudo apt-get install -f gcc-4.4-arm-linux-gnueabi and use ubuntu 10.04 i get this error : Lecture des listes de paquets… Fait Construction de l’arbre des dépendances Lecture des informations d’état… Fait Certains paquets ne peuvent être installés. Ceci peut signifier que vous avez demandé l’impossible, ou bien, si vous utilisez la distribution unstable, que certains paquets n’ont pas encore été créés ou ne sont pas sortis d’Incoming. L’information suivante devrait vous aider à résoudre la situation : Les paquets suivants contiennent des dépendances non satisfaites : gcc-4.4-arm-linux-gnueabi: Dépend: cpp-4.4-arm-linux-gnueabi (= 4.4.5-8) mais ne sera… Read more »

w-tom
w-tom
7 years ago

error: libicu is required, but not found?always this error?what can i do

John Comeau
7 years ago

this worked for me on Debian 7.1 (wheezy):

create a file /etc/apt/sources.list.d/emdebian.list, containing:

deb http://www.emdebian.org/debian squeeze main
deb http://ftp.us.debian.org/debian squeeze main contrib non-free

then apt-get update and try again.

Frank
Frank
6 years ago

@John Comeau

Thank you. This one works nice for me now. Did have some trouble finding a solution. (Debian 7.2)

Jessie
Jessie
5 years ago

Is there anyone that possibly help walk me through this a little more detailed. I am a major linux noob. Also when I searched cache for armel, what i recieved as options were not the same as shown above. I’m guessing this has to do with updates made over the years. Or if anyone can point me in the right direction towards more up to date procedures, that would be GREAT.

Advertisements