Autotools-Based Projects¶
Once you have a suitable cross-toolchain installed, it is very easy to develop a project outside of the OpenEmbedded build system. This section presents a simple "Helloworld" example that shows how to set up, compile, and run the project.
5.1.1. Creating and Running a Project Based on GNU Autotools¶
Follow these steps to create a simple Autotools-based project:
-
Create your directory: Create a clean directory for your project and then make that directory your working location:
$ mkdir $HOME/helloworld $ cd $HOME/helloworld
-
Populate the directory: Create
hello.c
,Makefile.am
, andconfigure.in
files as follows:-
For
hello.c
, include these lines:#include <stdio.h> main() { printf("Hello World!\n"); }
-
For
Makefile.am
, include these lines:bin_PROGRAMS = hello hello_SOURCES = hello.c
-
For
configure.in
, include these lines:AC_INIT(hello.c) AM_INIT_AUTOMAKE(hello,0.1) AC_PROG_CC AC_PROG_INSTALL AC_OUTPUT(Makefile)
-
-
Source the cross-toolchain environment setup file: Installation of the cross-toolchain creates a cross-toolchain environment setup script in the directory that the ADT was installed. Before you can use the tools to develop your project, you must source this setup script. The script begins with the string "environment-setup" and contains the machine architecture, which is followed by the string "poky-linux". Here is an example that sources a script from the default ADT installation directory that uses the 32-bit Intel x86 Architecture and the jethro Yocto Project release:
$ source /opt/poky/2.0/environment-setup-i586-poky-linux
-
Generate the local aclocal.m4 files and create the configure script: The following GNU Autotools generate the local
aclocal.m4
files and create the configure script:$ aclocal $ autoconf
-
Generate files needed by GNU coding standards: GNU coding standards require certain files in order for the project to be compliant. This command creates those files:
$ touch NEWS README AUTHORS ChangeLog
-
Generate the configure file: This command generates the
configure
:$ automake -a
-
Cross-compile the project: This command compiles the project using the cross-compiler. The
CONFIGURE_FLAGS
environment variable provides the minimal arguments for GNU configure:$ ./configure ${CONFIGURE_FLAGS}
-
Make and install the project: These two commands generate and install the project into the destination directory:
$ make $ make install DESTDIR=./tmp
-
Verify the installation: This command is a simple way to verify the installation of your project. Running the command prints the architecture on which the binary file can run. This architecture should be the same architecture that the installed cross-toolchain supports.
$ file ./tmp/usr/local/bin/hello
-
Execute your project: To execute the project in the shell, simply enter the name. You could also copy the binary to the actual target hardware and run the project there as well:
$ ./hello
As expected, the project displays the "Hello World!" message.