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 installThat'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 autoscriptSave 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 autoscriptsSave 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 Makefile.am bin_PROGRAMS = ctest ctest_SOURCES = main.c ctest.hSave 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 Makefile.am SUBDIRS = srcSave 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 configure.in 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-missingYou can test if it works , like that :
./configure make cd src ./ctest Programming In Assembly Is The BestI prefer to strip it in order to save space.
strip ctest ./ctest