Gestion des dépendances. Exemple : # toute ligne qui commence par " # " est un commentaire



Documents pareils
Quelques éléments de compilation en C et makefiles

Cours Langage C/C++ Programmation modulaire

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

La création d un paquet Debian. Aurélien Jarno. Journées du Logiciel Libre. 15 octobre 2005

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Chapitre 10 : Logiciels

Outils pour les réseaux de neurones et contenu du CD-Rom

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

Optimisation de logiciels de modélisation sur centre de calcul

CALC2QIF Conversion de données OpenOffice au format QIF

HOWTO Installation Administrative SolidWorks Simulation 2009

Systeme d'exploitation

Chaîne de production d un programme

Algorithmique et Programmation, IMA

Introduction à Windows Script Host DescoDev

Outils pour la pratique

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

CONDITIONS D UTILISATION VERSION NOMADE

Vade mecum installation et configuration d une machine virtuelle V5.1.0

LOGICIEL KIPICAM : Manuel d installation et d utilisation

Test de HSQLDB et Comparatif avec Sqlite

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

DOCUMENTATION ADMINISTRATEUR

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

Les chaînes de caractères

1 Repérer les paramètres d installation (.exe ou.msi).

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Chapitre 4 : Édition de fichiers texte - Vi

TP1. Outils Java Eléments de correction

Installation et prise en main

Retrospect 7.7 Addendum au Guide d'utilisation

Créer son premier package.deb. 19 août

1 Description générale de VISFIELD

FORMATION CONSULTANT SAP ERP FINANCES (FICO): PARAMETRAGE COMPLET CHAPITRE 1 STRUCTURES ORGANISATIONNELLES DE LA COMPTABILITE FINANCIERE

Cours de C/C++ par la pratique. Hugues Talbot

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Installation LTE-SIM. Simulation du réseau 4G (LTE-SIM) en vue d optimiser les ressources spectrales de l opérateur.

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

Alcatel OmniPCX Office

STATISTICA Version 12 : Instructions d'installation

Programmation en langage C

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Tutoriel code::blocks

Guide d utilisation de l utilitaire Intel One Boot Flash Update

Installation et compilation de gnurbs sous Windows

Guide de mise à jour de Suite SAP Business Intelligence Patch 10.x

Guide d'installation. Release Management pour Visual Studio 2013

TP Bases de données réparties

Ce logiciel est une mise à jour de l'application FileMaker Pro 9 ou FileMaker Pro 9 Advanced vers la version 9.0v3.

Chapitre 5 : Les procédures stockées PL/SQL

Jérôme Mathieu janvier Débuter avec R. Ce document est disponible sur le site web :

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Leica Application Suite

Maarch V1.4

Tutorial uclinux ARM7 Development Starter Kit. Pragmatec Produits et services dédiés aux systèmes embarqués. uclinux - Mise en oeuvre

Extension d'un outil de trace pour système embarqué temps réel. Encadrants : Laurent Pautet, Jérôme Hugues

Programmation impérative

Plan de notre intervention 1. Pourquoi le test de charge? 2. Les différents types de tests de charge 1.1. Le test de performance 1.2.

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

Environnements et Outils de Développement Cours 1 Introduction

Piratrax 2012 Danger - Effacer vos traces

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Construction de logiciel et packaging

INSTRUCTIONS D INSTALLATION SOUS WINDOWS 7 / WINDOWS VISTA / WINDOWS XP

Cours Programmation Système

Séance 0 : Linux + Octave : le compromis idéal

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

VERITAS NetBackup 5.0 en 5 jours : Administration Avancée

Logiciel de télégestion ACS série 700

Sage 50 Version 2014 Guide d installation. Sage Suisse SA

VERITAS NetBackup 6.x en 5 jours : Administration Avancée

Fiche d utilisation du logiciel. 1 - Installation. J. Thioulouse & D. Chessel


3L8PW = EP - 308A 6L24P = EP -624A

Serveur d Applications Web : WebObjects

Le langage C. Introduction, guide de reference

INF 321 : mémento de la syntaxe de Java

TCHATONS PAR LIAISON SANS FIL BLUETOOTH

contact@nqicorp.com - Web :

Windows Front-End Installation Guide HOPEX V1R1 FR

Projet Semestre2-1SISR

Chapitre I Notions de base et outils de travail

Travail collaboratif avec OpenOffice Texte (Writer)

HAYLEM Technologies Inc.

Qu est-ce qu un résumé?

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

Programmation C. Apprendre à développer des programmes simples dans le langage C

Testez votre installation. Créer un répertoire vide

Installation DataExpert YellowbillAdapter (PostFinance)

TD séance n 2c Mise à jour des Systèmes

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

Programmation système I Les entrées/sorties

ST1 (Installation-Protection) 1 ST1. Version 23. Janvier Calcul de structures. Installation Protection S E T R A

Transcription:

Gestion des dépendances Exemple : # toute ligne qui commence par " # " est un commentaire # gestion des dépendances # conversion dépend de conversion.c de sorties.c et de entrees.c conversion : conversion.o entrees.o sorties.o # édition de lien : lors de la compilation, la dernière étape consistera à lier les binaires # ce n'est pas ld qui sera appelée, mais gcc # (qui gère directement de nombreuses options à ce stade de la compilation ) # noter les deux tabulations qui doivent précéder toutes lignes de commande shell gcc -o conversion conversion.o entrees.o sorties.o

Dépendances secondaires : Pour spécifier des dépendances secondaires dans un Makefile, on définira autant de cibles que de fichiers objets, en précisant leurs dépendances respectives On reprend les règles précédentes, en décrivant précisément les dépendances pour chaque.o : conversion : conversion.o entrees.o sorties.o gcc -o conversion conversion.o entrees.o sorties.o conversion.o: conversion.c gcc -c -O conversion.c entrees.o : entrees.c fichier_en_tetes.h gcc-c -O entrees.c sorties.o : sorties.c gcc -c -O sorties.c

Règle " clean " Pour supprimer tous les produits de compilation, on utilise la règle clean ( quelquefois disctclean, ou encore realclean ) Exemple : clean : rm *.o *.do *~ conversion conversion.db Remarque : on peut aussi créer une règle permettant d'installer l'application : install : cp conversion /usr/local/bin ou la désinstaller: uninstall : rm -f /usr/local/bin/conversion

En résumé : Une ligne qui commence par # est un commentaire ATTENTION : Insérer un # au milieu d'une ligne ne produit pas forcément un commentaire après le signe ' # ' Une commande shell commence après des tabulations (deux tabulations en général ) Une ligne de commande shell crée un shell, donc deux lignes différentes n'auront pas le même environnement

Exécution de plusieurs commandes dans un même shell : Solution1 : Solution2 : cd../programme ; gcc -c -o truc cd../programme \ gcc -c -o truc Remarque : le caractère " \ " est utilisé pour couper une ligne trop longue. Il ne doit être suivi d'aucun autre caractère sur la ligne pour être valable

Cibles Une cible de make s'écrit : <nom_de_cible> : <liste_dependances>

Abréviations et Macros définitions Abréviations: Pour simplifier l'écriture des Makefile, on utilise des macros définitions de substitutions : $@ : symbolise le nom complet de la cible $* : représente le nom de la cible, sans suffixe

Exemple : conversion: conversion.o entrees.o sorties.o gcc -o $@ $*.o entrees.o sorties.o conversion.db: conversion.do entrees.do sorties.do gcc -o $@ $*.do entrees.do sorties.do entrees.o : entrees.c fiechie.en.tet.h gcc -c -O $*.c entrees.do: entrees.c fichier_en_tete.h gcc -ggdb -o $@...

Macros définitions : <nom> = <macro> Exemples : la chaine $(<nom>) est substituée à <nom>, mais on peut aussi utiliser des variables comme DEPS et DEPSDB DEPS = entrees.o sortie.o conversion.o DEPSDB = entrees.do sortie.do conversion.do conversion: $(DEPS) gcc --o $@ $(DEPS) conversion.db: $(DEPSDB) gcc -o $@ $(DEPSDB)

On peut ajouter le déboguage avec CFLAGS : CFLAGS = -DDEBUG -gdwarf-2 Ainsi, la ligne : gcc -c $(CFLAGS) entrees.c Important : bien respecter la syntaxe $(CFLAGS) ou ${CFLAGS}

Recherche des répertoires : on utilise VPATH, avec la syntaxe : VPATH = <path1>:<path2>:<path3>

Règles de compilation par défaut Suffixes : # une ligne qui ne contient rien réinitialise les suffixes pris par défaut par make.suffixes: # on ajoute de nouvelles règles aux fichiers se terminant par.c.o et.do (pour déboguage ).SUFFIXES :.c.o.do # suivi de la règle.c.o:; gcc -o $@ -O $*.c Important : il ne doit pas y avoir d'espace entre.c et.o, qui sont immédiatement suivis de " :; ", puis de la commande la plus générique possible. Ici, un.c donnera un.o par défaut, avec la ligne de commande générique associée

La règle précédente peut s'écrire :.c.o:; gcc -c -o $@ -O $< Dans laquelle " $< " symbolise le fichier source sur lequel s'appuie la cible autre exemple, concernant la version déboguage :.c.do:; gcc -c -o $@ $(CFLAGS) $< Note : il n'y a pas d'optimisation lors de la compilation de la version de déboguage ( c'est en général vrai, et cela peut causer des dysfonctionnements inattendus )

Etude d'un makefile complet (d'après Programmer avec les outils GNU, éditions O'Reilly ): # cette ligne reinitialise la liste des suffixes.suffixes: # nos regles.suffixes:.c.o.do OPTIONDEBOG = -DDEBUG -ggdb OPTIONPROG = -Wall -ansi -O2 OBJETSPROG = programme.o autre.o OBJETSDEBOG = programme.do autre.do NOM_EXEC = prog # regle suffixée decrivant la creation d'un fichier ".o " # (version finale ).c.o:; gcc -c -o $@ $(OPTIONPROG) $< # regle suffixee décrivant la création d'un fichier ".do " # version de déboguage.c.do:; gcc -c -o $@ $(OPTIONDEBOG) $< # Creation des exécutables prog: $(OBJETSPROG)

gcc -o $(NOM_EXEC) \ $(OBJETSPROG) debog : $(OBJETSDEBOG) gcc -o $(NOM_EXEC) $(OBJETSDEBOG) # liste des fichiers à lier à la version finale # (et à recompiler au besoin) programme.o: programme.c en_tete.h autre.o : autre.c # liste des fichiers à lier à la version de déboguage # (et à recompiler au besoin ) programme.do: programme.c en_tete.h autre.do : autre.c # pour effacer tous les produits de compilation clean : rm *.o *.do *~ rm $(NOM_EXEC)

Exemples d'utilisation : make programme.o lance la commande : gcc -c programme.o -Wall -ansi -O programme.c de même que : make autre.o lancera : gcc -c autre.o -Wall -ansi autre.c

Invoquer make make <cible> Options essentielles de make : -f : permet de choisir le fichier Makefile (remplace le nom par défaut) -n : ne fait rien, simule la réalisation des règles. Très utile! -i : ignore les erreurs -k : analogue à i, mais force la création de toutes les cibles, a l'exception de celles qui engendrent une erreur -q : n'exécute aucune commande, mais vérifie que la cible est à jour (retourne 0 si c'est le cas). Si la cible n'est pas à jour, une autre valeur est retournée -s : mode silencieux, ne retourne rien -j : lance l'exécution simultanée de commandes multiples (machine multi processeurs/cores) Note : il faut que la machine supporte la charge ( -j 3 est raisonnable sur une machine mono utilisateur ) -t : lance make en forçant les mises à jour des fichiers concernés -d : mode bavard ( verbose ) Exemples...