Category:How to - Build helloworld

From Gumstix User Wiki
Revision as of 10:39, 14 January 2010 by Sellis (Talk | contribs) (Added a network boot link)

Jump to: navigation, search


What follows is a description for building C programs on a workstation using the cross-build tools of OpenEmbedded, but not using the bitbake/recipe framework.


Follow the instructions for setting up a build environment to get the cross-build tools correctly installed.

While you don't necessarily need to build a complete image to get the cross-tools for a C program, as a practical matter, successfully building an image is a good test that the cross-tools are correctly installed.

If you only want to cross compile a C program without third-party dependencies, then you can build just the gcc-cross recipe.

bitbake gcc-cross

And if you need the kernel headers too...

bitbake linux-libc-headers

There is no time lost building only these recipes, since both are dependencies of a full image.

The tools are built under the TMPDIR directory declared in ${OVEROTOP}/build/conf/site.conf.

TMPDIR defaults to ${OVEROTOP}/tmp, but you can point it somewhere else.

For instance, putting TMPDIR on a faster disk can speed your build.


Create a makefile for your project pointing to the cross-build toolchain.

Here is a simple one for helloworld.

# Makefile for building with the OE cross tools 
# OVEROTOP is normally ${HOME}/overo-oe 
# OETMP is the same as TMPDIR as defined in ${OVEROTOP}/build/conf/site.conf


TOOLDIR = ${OETMP}/cross/armv7a/bin

STAGEDIR = ${OETMP}/staging/armv7a-angstrom-linux-gnueabi/usr

CC = ${TOOLDIR}/arm-angstrom-linux-gnueabi-gcc

CFLAGS = -Wall  


INCDIR = ${STAGEDIR}/include      


TARGET = helloworld

OBJS = helloworld.o 

        ${CC} ${CFLAGS} ${OBJS} ${LIBS} -o ${TARGET}

helloworld.o: helloworld.c 
        ${CC} ${CFLAGS} -I ${INCDIR} -c helloworld.c  

        rm -f ${TARGET} ${OBJS} *~


Copy the resulting target executable to the overo.

1. If you are using a microSD card, copy your executable to the rootfs before you unmount it in the final step.

2. If you have a network connection to the overo, use scp.

3. If you have a kermit console session, use the kermit SEND command.

4. If you are doing a network boot then copy the executable directly to the nfs exported root filesystem the gumstix is using on the workstation.

This category currently contains no pages or media.