* Fabriquer un paquetage pour les sources (the GNU build system).
– Installer les outils pour fabriquer un paquetage GNU (debian)
* autoscan
* automake
* autoconf
– Ecrire un programme C:
* mkdir finixware; cd finixware
* mkdir src; cd src
* vim finixware.c
#include
int main()
printf(« Hello the FinixWorldn »);
return 0;
– Compiler et tester le programme C:
* gcc -o finixware finixware.c
– Paquetage
* outil: autoscan
– permet d’aider a la creation d’un fichier configure.ac (les besoins du source: include, librairie …)
– tester la portablilite (entre systeme Unix) des methodes et des fonctions
– creer un fichier vide: configure.ac
=> cd finixware
=> touch configure.ac
=> autoscan
=> cp configure.scan configure.ac (copier le fichier)
– ajouter des elements dans configure.ac
=> AC_INIT(finixware, 1.0)
=> AM_INIT_AUTOMAKE
=> AC_CONFIG_FILES([Makefile])
* aclocal
– permet de creer les macros pour le deploiement futur sur une autre machine
– rendre independant de la pateforme l’utilisation des outils qui vont suivre
* creer squelette Makefile.am
– vim Makefile.am
bin_PROGRAMS = finixware
finixware_SOURCES = finixware.c
* autoheader
– creation du fichier config.h.in (qui va servir pour configure)
=> autoheader
* automake
– creer le fichier Makefile.in
– automake necessite les fichiers suivant:
# install-sh
# missing
# INSTALL
# NEWS
# README
# AUTHORS
# ChangeLog
# COPYING
# depcomp
– automake avec l’option « -a » permet de generer certain de ces fichiers:
# install-sh
# missing
# INSTALL
# COPYING
# depcomp
– les autres sont a creer (dans notre exemple, ils seront vides):
=> touch NEWS README AUTHORS ChangeLog
=> automake -a (qui va creer le fichier Makefile.in)
* autoconf
– permet de creer le fichier configure.in (qui va servir pour configure)
=> autoconf
* Tester le configure
– ./configure (pour voir si ca marche)
* Creer le paquetage
– fournir un fichier src.tar.gz (ou tar.bz2)
– fichier de type finixware-1.0.targ.gz (voir le fichier configure.ac pour les parametres)
– contenant les sources, les fichiers pour compiler.
=> make dist-gzip (ou dist-bzip2)
– on obtient le fichier suivant: finixware-1.0.tar.gz
* Tester le paquetage
– mkdir ../finixware-test
– cp finixware-1.0.tar.gz ../finixware-test/
– cd ../finixware-test/
– tar xzvf finixware-1.0.tar.gz
– cd finixware-1.0
– ./configure
– make
– make install
– which finixware (normalement celui qui se trouve dans /usr/local/bin)
– finixware (executer)
=> Hello the FinixWorld
et voila le resultat 🙂
– fin
– Annexe
– fichier configure.ac
______________________
#
- – Autoconf
- –
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(finixware, 1.0)
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src/finixware.c])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
______________________
– fichier finixware.c
______________________
#include
int main()
printf(« Hello the FinixWorldn »);
return 0;
______________________