Skip to Content

Using The AutoTools(Scripts)

Pronco's picture

Using The AutoTools

If you think one day to start programming on linux, sure you will use C language (not me, i will always use assembly), but when your program sources get biggers as its version increase or you want to publish its source code, how users gonna to use it, are they gonna to compile every source file separetely then link them all together, no it's a bad idea and very handy, you will have to use the autoscripts.

In this article i will describe how to use the autoscripts for your own program sources, so i will write a simple C sourcefile to show you how to use the autoscripts(autoheader,automake,autoconf).


When you a compile a program from source you should have done this :

./configure make make install

That's what the autoscripts we gonna make.

I will use emacs in this article, but your free to use any text editor even pico.

Let's start by creating directories which will contain the source files, assume our program name is "ctest" , type the following in a bash prompt :

mkdir ctest cd ctest mkdir src cd src emacs main.c /* this is a sample C source to test autoscript
  • /
    1. include "ctest.h"
    int main(void) { printf("Programming In Assembly Is The Best \n"); return 0; }

    Save it like that : press f10 then f then s then f10 then f then e .

    emacs ctest.h /* This is a sample header to test autoscripts
    • /
    1. define _WHO_AM_I "Hacker"
    2. define _WHO_IS_MASLAN "Assembler"

      Save it like that : press f10 then f then s then f10 then f then e .

      Now we have finished writing our program source files, so we gonna to create the compiling and installing script as follows.

      emacs bin_PROGRAMS = ctest ctest_SOURCES = main.c ctest.h

      Save it like that : press f10 then f then s then f10 then f then e .

      We have created a file containing our program name "ctest" and our sources names "main.c , ctest.h", this file is used by automake.

      cd.. emacs SUBDIRS = src

      Save it like that : press f10 then f then s then f10 then f then e .

      We have just created another automake file which points to our src directory, in case if your program have more than source directory or have "po" subdirectory which contains other languages interface for your program.

      emacs AC_INIT(src/main.c) AM_INIT_AUTOMAKE(ctest,0.0.1) AM_CONFIG_HEADER(config.h) AC_OUTPUT([ Makefile src/Makefile ])

      Save it like that : press f10 then f then s then f10 then f then e .

      We have created a file used by autoconf, which will be used to generate ./configure script, which will create Makefile used by make.

      Now we have everything done, just type the following :

      aclocal autoheader autoconf automake --add-missing

      You can test if it works , like that :

      ./configure make cd src ./ctest Programming In Assembly Is The Best

      I prefer to strip it in order to save space.

      strip ctest ./ctest


CVirus's picture

hmmm ... I guess that was an

hmmm ... I guess that was an awesome article with a CoooL Style ... Good work fella keep it up :)

If there is an application

If there is an application that needs to work on both mobile and non-mobile platforms, besides adding appropriate pre-processor symbols around platform-specific code, the compiling process should be different for different platforms. This document gives an overview of GNU Autotools and specifies the process of using GNU Autotools to enable the compiling switch among different platforms. The document also describes how to check the build architecture to automatically compile properly, when creating debian packages.

This document assumes that the reader is familiar with the following: Basic Linux knowledge Understanding of Mobile Internet Device (MID) Basic knowledge of GNU make utility and Autotools


Plazma kiralama

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Dr. Radut | book