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
,
and configure.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 using the dizzy Yocto Project release:
$ source /opt/poky/1.7.2/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:
$ ./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.