How to install a pre-compiled Linux GNU tool-chain for embedded programming

By Jim Smith

Rate: (0 Ratings)

Embedded programming comes with some complexities due to the limitations and specialization of the target hardware. Embedded software is usually installed and executed on small devices like mobile phones, televisions, microwave ovens and other consumer appliances that don't have the resources and power for software engineering. In addition to this many embedded systems use processors with different instruction sets or architectures. The GNU tool-chain is the set of software tools used to build software executables. The tool-chain is compiled and installed for a specific hardware platform like PPC and ARM for example. In this article I explain how to install a pre-compiled GNU tool-chain for developing embedded software for an ARM9 architecture running Linux. Other platforms will have a similar approach to installing the tool-chain software. Using a pre-compiled version of the GNU tool-chain is easier than finding and piecing the tool-chain together yourself. I've done this before while building software, it's very time consuming and should be avoided if possible. You'll avoid the difficulties of searching for sources that will work on your target platform after being compiled and installed. The pre-compiled tool-chain contains the binaries ready to be installed on the host machine.

Instructions

Difficulty: Moderately Easy

Things You’ll Need:

  • ARM9 SBC
  • Linux Operating System
  • Intel Pentium PC
  • ARM9 GNU Tool-Chain Package(s)

Step1
Find a tool-chain package for your target board, for instance ARM9,PPC and download the package(s). There are sites on the internet where you can download the GNU tool-chain.
Download sites:

http://www.codesourcery.com/gnu_toolchains/arm
http://www.kegel.com/crosstool
http://www.aleph1.co.uk/oldsite/armlinux//docs/toolchain/toolchHOWTO/x43.htm/
Step2
Extract the binaries to the host machine. You can test the extraction in a temp directory. If you feel the need to verify the integrity of the zipped file use the MD5 version.
Step3
After you extract the files you should have a path to your tool-chain that contains GNU tools used for compiling programs for your target board. Create links inside your tool-chain directory to your binaries used by GCC to build target executables. The link names should be the short names used by the GCC. The command on a host machine for an ARM9 target where the tool-chain is located in /usr/local/arm is ln -s /usr/local/bin/arm-linux-gcc /usr/local/arm/bin/gcc. However, this must be done for each tool so, a script would be much more efficient than doing this by hand. I used a BASH script that I wrote, but it could not be included here.
Step4
You must make sure your paths are correct when you compile your programs for your target. When the tool-chain was built it should have been configured to search its install path for the GNU build tools. In this case it was prefix=/usr/local/arm. Use the -Bprefix option if you get an error saying a utility could not be found, for example /usr/local/arm/bin/gcc -v -o test -B/usr/local/arm test.c. -Bprefix tells GCC to look at the path specified after -B for the utilities used for building your executable. The resulting executable will not run on your host machine so, move it to your target and verify that it was built correctly.

If you don't have the shared libraries used by your program installed on your embedded board you can use the -static option of GCC. When you use -static the linker program will compile the libraries into your executable instead of searching the library paths for the shared binary. If this is not done and you don't have the shared libraries on your embedded board, your the program will complain about not being able to find the shared libraries. One of the disadvantage of using this option is that your executable will be much larger, but an advantage is that your executable will load faster and run without the shared library. Make sure you modify the build scripts for your source code to use the right tools.

Tips & Warnings

  • The easiest way to work with your target board is through a Network File System (NFS) mount from the target to the host machine if this option is available.
  • The above steps worked for me, use them at your own risk. I take no responsibility for any problems caused by following the steps.

Post a Comment

POST A COMMENT

Request a New How-To Article

Looking for more How To information? Chances are there’s an eHow member who knows how to do what you’re looking to do. Submit an article request now!

eHow Article:  How to install a pre-compiled Linux GNU tool-chain for embedded programming

eHow Member: Jim Smith

Jim Smith

Enthusiast Enthusiast | 400 Points

Category: Computers

Articles: See my other articles

Related Ads