Atelier 0: Initiation aux outils de développement C sous Linux



Documents pareils
Cours Langage C/C++ Programmation modulaire

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

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

Télécom Nancy Année

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Systeme d'exploitation

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Annexe : La Programmation Informatique

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

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Quelques éléments de compilation en C et makefiles

Introduction au langage C

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

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

Tutoriel code::blocks

Le langage C. Séance n 4

Chapitre 4 : Édition de fichiers texte - Vi

Chapitre 10 : Logiciels

PROCEDURE D'INSTALLATION OPENREPORTS

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

Environnements de développement (intégrés)

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

BTS SIO Dossier BTS. PURCHLA Romain

Installation et prise en main

Client Kiwi Backup : procédures d'installation et de mise à jour. Gilles Arnoult, Clément Varaldi

Conventions d écriture et outils de mise au point

Parallels Transporter Lisez-moi

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

Introduction à Windows Script Host DescoDev

Backup Exec 15. Guide d'installation rapide

A Libre Ouvert. Médiathèque Jacques Ellul. le

1. Structure d'un programme FORTRAN 95

MI03 TP. Objectifs du TP 1ère séance. 2ème séance. Construction d'un système linux embarqué complet

Situation professionnelle n X

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

TP1 : Initiation à Java et Eclipse

Remise à niveau d un programme JAVA du domaine public

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

Guide d'installation

Installation 1K-Serveur

Architecture de la plateforme SBC

L'accélération 3D sous Linux

TD/TP 1 Introduction au SDK d Android

Symantec Backup Exec 12.5 for Windows Servers. Guide d'installation rapide

Programmation système I Les entrées/sorties

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Programmation C++ (débutant)/instructions for, while et do...while

Installer un serveur web de développement avec VirtualBox

Station de gestion Dell OpenManage Guide d'installation de la version 7.1

INSTALLER JOOMLA! POUR UN HEBERGEMENT LINUX

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

DOCUMENTATION ADMINISTRATEUR

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

Procédure d'installation complète de Click&Decide sur un serveur

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Instructions d'installation de IBM SPSS Modeler Server 16 pour UNIX

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

Utiliser des logiciels Windows sous Linux Ubuntu

Afin d'éviter un message d'erreur au démarrage du service Apache du type :

Installation et compilation de gnurbs sous Windows

ECLIPSE ET PDT (Php development tools)

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE.

L'accès aux ressources informatiques de l'ufr des Sciences

Installation d un serveur de messagerie en local. Télécommunications & réseaux. Nom-prénom: Fiche contrat

Le Framework.Net. Introduction. Pourquoi.Net?

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

TP, première séquence d exercices.

Eclipse atelier Java

Projet Administration Réseaux

Installation software

Acronis Backup & Recovery 10 Server for Windows Acronis Backup & Recovery 10 Workstation. Guide de démarrage rapide

Acronis Backup & Recovery 10 Server for Linux. Guide de démarrage rapide

sudo apt get install linux headers `uname r` build essential gcc libqt3 mt libxalan110 libxerces27

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

CA ARCserve D2D pour Linux

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

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

Exportation d'une VM sur un périphérique de stockage de masse USB

Projet serveur OwnCloud

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

1/ Présentation de SQL Server :

Guide d'installation du token

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

AFTEC SIO 2. Christophe BOUTHIER Page 1

Symantec Backup Exec Guide d'installation rapide

Virtualisation de Windows dans Ubuntu Linux

Comment récupérer ses fichiers quand Windows ne démarre plus

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

PROJET ALGORITHMIQUE ET PROGRAMMATION II

SAGE Financements Notice de mise à jour via internet

Version Wraptor Laboratories. Installation de SpamWars 4.0 Édition Entreprise

Outils pour la pratique

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

Maintenir Debian GNU/Linux à jour

Transcription:

1)Objectifs: Atelier 0: Initiation aux outils de développement C sous Linux S'initier à l'utilisation de quelques outils de développement avec le langage C sous Linux. Développer en C sous Linux à partir d'un terminal (en mode console). NB:Il est à noter de même que l'utilisation de tout IDE tel que codeblocks par exemple durant tous les projets est strictement interdite. 2)Prérequis: Vous devriez disposer des machines virtuelles Linux Ubuntu déjà utilisées au premier semestre dans le module Système&Réseau. 3)Outils de développement: Gcc: ( GNU Compiler Collection) est une suite de logiciels libres de compilation. On l'utilise dans le monde Linux lorsqu on veut transcrire du code source en langage machine, c'est le plus répandu des compilateurs. La suite gère le C et ses dérivés mais aussi le Java ou encore le Fortran. Make: (Le gestionnaire de compilation make) permet d'automatiser la phase de compilation, celle de votre programme mais aussi celle de la documentation associée, et permet aussi d'automatiser l'installation, la mise en paquetage pour distribuer plus facilement votre application, l'élimination de fichiers temporaires créés par votre éditeur de texte, le compilateur, etc... Gdb: GDB est l'acronyme de Gnu DeBugger. C'est un debugger puissant dont l'interface est totalement en ligne de commande, c'est à dire avec une invite en texte. GDB est tellement apprécié qu'on le trouve aussi encapsulé dans des interfaces graphiques, comme XXGDB ou DDD. GDB est publié sous la licence GNU et gratuit. 4)Préparation de l'environnement 1.Lancer vos anciennes machines virtuelles Linux Ubuntu déjà utilisées dans le module système et réseau effectué au premier semestre. 2.Lancer un terminal (combinaison de touches: ctrl + alt + t) 3.Installer les outils gcc, make et gdb en tapant les commandes suivantes: sudo apt-get update && sudo apt-get install build-essential gdb 4.Vérifier l existence des outils gcc, make et gdb dans votre système 1

d'exploitation: gcc - - version make - - version gdb - - version En cas de sucés d'installation, ces commandes afficheront les versions des outils gcc, make et gdb installés dans votre système d'exploitation Linux. 5)Développement C Sous Linux Le développement de programmes C sous linux à partir d'un terminal passe par des étapes: phase d'édition ou d écriture du code phase de compilation du code afin de créer un binaire(exécutable sur la machine) phase d'exécution du binaire et débogage en cas d'erreur de segmentation. a)phase d'édition de code source La première phase de développement avec n'importe quel langage est l'édition du code ou rédaction du code moyennant un éditeur de texte. Dans un terminal (en mode console) une panoplie d'éditeurs existe. L'éditeur le plus facile à utiliser est nano. En mode graphique, il existe un éditeur préinstallé dont le nom est gedit. NB: si l'éditeur nano n'est pas installé, taper dans le terminal la commande suivante: sudo apt-get install nano Lancer un terminal (ctrl + alt + t) Éditer un fichier main.c avec la commande suivante: commande1: nano main.c (sinon gedit main.c) Ensuite, écrire le code suivant: #include<stdio.h> int main() { int a; int b; printf("\nsaisie du premier Nombre :"); scanf("%d", a); printf("\nsaisie du second Nombre:"); scanf("%d", b); printf("\n%d + %d = %d", a, b, a+b); printf("\n%d + %d = %d", a, b, a-b); printf("\n%d / %d = %f\n", a, b, (float)a/b); return (0); NB: Après édition du code en utilisant nano, pour sauvegarder et quitter, taper: (ctrl + o pour enregistrer) et (ctrl+x pour quitter nano) 2

b)phase de Compilation du code source Dans le même terminal, taper la commande qui permet de compiler le fichier main.c: commande2: gcc main.c -o programme main.c est le fichier source et programme est le binaire(exécutable) résultant de l'opération de compilation. c)phase d'exécution du binaire Afin de lancer l'exécution du binaire issu de la compilation du code source main.c, juste taper dans le même terminal la commande:./programme 6)Compilation de plusieurs fichiers sources Figure1: Compilation multiple-fichiers en C Gardons le même terminal actif, vous disposez à présent du fichier main.c. créez deux nouveaux fichiers nommés fonctions.c et fonctions.h: commande1: touch fonctions.c fonctions.h Éditez le fichier fonctions.c et copiez dedans le code suivant: int sommer(int a, int b) { return (a + b); int soustraire(int a, int b) { return (a - b); float diviser(int a, int b) { return ((float) a / b); Éditez le fichier fonctions.h et copiez dedans les prototypes des fonctions implémentées dans fonctions.c #ifndef FONCTIONS_H_ 3

#define FONCTIONS_H_ int sommer(int a, int b); int soustraire(int a, int b); float diviser(int a, int b); #endif /* FONCTIONS_H_ */ NB: n'oubliez pas d'ajouter #include ''fontions.h'' dans main.c et d'évoquer les fonctions de ce module Compiler chaque module à part: commande2: gcc -c main.c commande3: gcc -c fonctions.c NB: L'option -c permet de compiler le fichier en question sans passer à la phase d'édition de liens(the -c option says not to run the linker [voir man gcc]). Tapez la commande «ls» afin de lister le contenu du répertoire courant.vous allez remarquer que deux fichiers fonctions.o et main.o (des objects files),résultat de la phase de compilation, sont créés. La dernière phase après celle de compilation est de lier les objets files en un seul binaire exécutable (prog) moyennant l'option -o commande4: gcc main.o fonctions.o -o prog Enfin vous pouvez exécuter le binaire résultant, en tapant la commande: commande5:./prog 7)Automatisation de la compilation sous linux Afin d'automatiser la compilation de plusieurs fichiers sources, nous allons utiliser l'outil make. Make est un outil très général permettant, entre autre, d'automatiser la compilation d'un projet. Il suffit de décrire ces relations à Make, ainsi que les commandes associées pour qu'il puisse produire la séquence correcte de commandes. a)création du fichier Makefile Le fichier Makefile est celui dans lequel on met les commandes qui seront exécutées par l'outil make. Ce fichier est constitué des descriptions des relations entre les fichiers sources et les fichiers objets ainsi que des relations entre les fichiers objets et l'exécutable (des règles).une règle est constituée des composantes suivantes: cible: dépendances commande Dans le même terminal, créez un fichier intitulé Makefile 4

commande1: touch Makefile Éditez les règles suivantes dans le fichier Makefile commande2: nano Makefile prog:fonctions.o main.o gcc fonctions.o main.o -o prog main.o:main.c gcc -c main.c fonctions.o:fonctions.c gcc -c fonctions.c Enregistrez le fichier Makefile et quittez nano (ctrl + o et ctrl + x) Compilez le projet en invoquant l'outil make commande3: make Exécutez la cible prog (le binaire résultant):./prog 8)Exécution et débogage Éditez à nouveau le fichier Makefile contenant les règles de compilation. commande3: nano Makefile Ajoutez l'option -g à chaque fois où vous évoquez la commande gcc, enregistrez le fichier Makefile, ensuite quittez. prog:fonctions.o main.o gcc fonctions.o main.o -o prog -g main.o:main.c gcc -c main.c -g fonctions.o:fonctions.c gcc -c fonctions.c -g Rééditer le fichier main.c et remplacez le code précédent par ce code qui présente un bug lors de l'exécution(le fameux message: erreur de segmentation) #include<stdio.h> #include "fonctions.h" int main() { int a; int b; printf("\nsaisie du premier Nombre :"); scanf("%d", a); printf("\nsaisie du second Nombre:"); scanf("%d", b); printf("\n%d + %d = %d", a, b, sommer(a, b)); printf("\n%d + %d = %d", a, b, soustraire(a, b)); printf("\n%d / %d = %f\n", a, b, diviser(a, b)); return (0); Recompilez à nouveau le projet commande: make (La compilation va se dérouler sans problèmes) 5

Exécutez le binaire résultant prog commande:./prog Figure2: Bug lors de l exécution du binaire prog Lors de l'exécution, un message s'affiche: ''Erreur de segmentation'' sans aucune indication sur la nature et l'emplacement de l'erreur, puisque nous sommes en phase d'exécution du binaire prog. La seule façon de trouver les erreurs en cours d'exécution est de déboguer le binaire prog grâce au débogueur gdb. Lancez le débogueur gdb: gdb prog Figure3: Lancement du débogueur gdb Une fois l'interface du gdb est lancée, tapez dans le prompt du gdb la commande 'run' ou tapez 'r'. Des informations sur la cause de l'erreur s'affichent mais ce n est pas encore précis, on peut en conclure que l'utilisation de la fonction scanf a causé le problème. 6 Figure4: opération de débogage

On peut mieux faire en localisant la ligne causant l'erreur dans le code. Il suffit de taper la commande where dans le prompt du gdb: Figure5: Localisation du bug Auteur : Anouar Chemek Nadhir Khayati Karim Fedhila 7