TD1. La programmation en C sous Unix. ASR4 C sous Unix



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

Introduction au langage C

Le langage C. Séance n 4

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

Cours Langage C/C++ Programmation modulaire

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

Algorithmique et Programmation, IMA

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

UE Programmation Impérative Licence 2ème Année

Programmation système I Les entrées/sorties

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Cours Programmation Système

Initiation. àl algorithmique et à la programmation. en C

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

Utiliser Java sans BlueJ

Chapitre 10 : Logiciels

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

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

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

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Programmation système en C/C++

Quelques éléments de compilation en C et makefiles

3IS - Système d'exploitation linux - Programmation système

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Java Licence Professionnelle CISII,

Langage Éric Guérin 5 octobre 2010

Programmation système de commandes en C

Outils pour la pratique

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Le prototype de la fonction main()

INTRODUCTION À LA PROGRAMMATION PRATIQUE DU LANGAGE C. M. Le Gonidec

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation en langage C

I. Introduction aux fonctions : les fonctions standards

Conventions d écriture et outils de mise au point

I00 Éléments d architecture

Le langage C. Introduction, guide de reference

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

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Cours d Algorithmique et de Langage C v 3.0

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

Annexe : La Programmation Informatique

Langages et Concepts de Programmation Introduction à la programmation en langage C

Lier Erlang avec d autres langages de programmation

Introduction à Eclipse

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Cours 1 : La compilation

Derrière toi Une machine virtuelle!

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Les débordements de tampons et les vulnérabilités de chaîne de format 1

Cours de Système : Gestion de Fichiers

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Programmation impérative

Optimisation de logiciels de modélisation sur centre de calcul

Notes de Cours - Programmation Pascal Ferraro

Le Langage C++ Patrick TRAU - ULP IPST version du 02/10/05

L informatique en BCPST

Systeme d'exploitation

TP1. Outils Java Eléments de correction

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

La mémoire. Un ordinateur. L'octet. Le bit

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation Classique en langage C

TP 1 Prise en main de l environnement Unix

Cours 14 Les fichiers

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Programmation stochastique

Algorithmique, Structures de données et langage C

Les structures. Chapitre 3

Cours 6 : Tubes anonymes et nommés

Les chaînes de caractères

Projet De Stijl Plate-forme pour robots mobiles

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

wxwidgets dans un environnement Microsoft Windows

Les processus légers : threads. Système L3, /31

Contrôle de versions et travail collaboratif. Organisation du travail collaboratif. Organisation du travail collaboratif

Chaîne de production d un programme

Les fichiers. Chapitre 4

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

Programmation en C/C++

Arguments d un programme

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

Bases Java - Eclipse / Netbeans

Cours de programmation avancée. Le langage C. Université du Luxembourg

Exercice sur les Dockers

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

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Chapitre 2. Classes et objets

Transcription:

ASR4 C sous Unix TD1 La programmation en C sous Unix I U T d ' A m i e n s, d é p a r t e m e n t I n f o r m a t i q u e a n n é e u n i v e r s i t a i r e 2 0 1 0 / 2 0 1 1 A S R 4

Plan A. Préparation du fichier source B. Compilation et édition de liens 14/02/11 ASR4 TD1 T2

A. Préparation du fichier source Utiliser un éditeur de texte classique vi, emacs (console texte) gedit, kwrite (console graphique) Enregistrer sous un nom de fichier avec extension «point c» Revenir à la ligne de commande et bâtir l'exécutable Commande gcc 14/02/11 ASR4 TD1 T3

A. Préparation du fichier source Une alternative : geany 14/02/11 ASR4 TD1 T4

A. Préparation du fichier source 14/02/11 ASR4 TD1 T5

A. Préparation du fichier source 14/02/11 ASR4 TD1 T6

A. Préparation du fichier source 14/02/11 ASR4 TD1 T7

Plan A. Préparation du fichier source B. Compilation et édition de liens 14/02/11 ASR4 TD1 T8

1. La commande gcc La commande gcc... GNU C Compiler issue de la famille gcc GNU Compiler Collection gnat (ada) g++ (C++) gcj (Java) gpc (Pascal) 14/02/11 ASR4 TD1 T9

2. Les fichiers utilisés Un fichier source «point c»... ou plusieurs!!! C'est la compilation séparée Un seul fichier source doit contenir une fonction main Fichier(s) «point c» gcc 14/02/11 ASR4 TD1 T10

2. Les fichiers utilisés Un ou plusieurs modules objet «point o» Contient du code source traduit en binaire #include<stdio.h> main() { printf("vive Unix\n"); } Assemblage 0100101110101010100 0111000101101000111 1111010101110100110 1001000111001010101 0101011110011101010 Fichier source «point c» Module objet «point o» Un module objet n'est pas exécutable! 14/02/11 ASR4 TD1 T11

2. Les fichiers utilisés Des bibliothèques «point a» ou «point so» Collection de modules objet Donc du code en binaire! Fichier(s) «point c» Bibliothèque(s).a.so /lib/libc.so gcc 14/02/11 ASR4 TD1 T12

Bibliothèques statiques Bibliothèque incluse dans le binaire exécutable final plus gourmand en espace disque. 14/02/11 ASR4 TD1 T13

Bibliothèques dynamiques Bibliothèque non incluse dans le binaire exécutable final Attention : doit être présente sur le même ordinateur que l'exécutable! Télé chargée à la demande Partageable entre plusieurs programmes 14/02/11 ASR4 TD1 T14

Notion de bibliothèque #include<stdio.h> Librairie.a 0011101010101001 1101010101111000 1001110101010100 1110101010111100 0100111010101010 0111010101011110 0010011101010101 0011101010101111 0001111010101010 0111010101011110 0010011101010101 0011101010101111 0101010011101010 10 int max(int a, int b) { if(a>b) return a; else return b; } Pollux.c 0011101010101001110101010111 1000100111010101010011101010 1011110001001110101010100111 0101010111100010011101010101 00111010101011110001 Pollux.o 0011101010101001110101010111 1010101011110001001110101010 1001110101010111100010011 Azalee.o 0011101010101001110101010111 1010101011110001001110101010 1001110101010111100010011001 01 Margotte.o 14/02/11 ASR4 TD1 T15

2. Les fichiers utilisés Des fichiers d'entête «point h» Assurent l'interface entre le programmeur et la bibliothèque correspondante Contiennent : Prototypes de fonction (printf dans stdio.h) Définitions de type (FILE dans stdio.h) Constantes macro définies (NULL dans stdio.h) Fichier(s) «point c» Bibliothèque(s).a.so /lib/libc.so gcc Fichier(s) «point h» 14/02/11 ASR4 TD1 T16

Notion de fichier d'entête Pollux.c #include<stdio.h> main() { printf("vive Unix\n"); } Le prototype de printf stdio.h extern int printf ( const char * format,...); Le code en binaire de printf libc.so 001110101010100111010101011110001001110101010100 111010101011110001001110101010100111010101011110 001001110101010100111010101011110001111010101010 011101010101111000100111010101010011101010101111 010101001110101010 14/02/11 ASR4 TD1 T17

A noter! Un fichier d'entête ne contient pas de code source! 14/02/11 ASR4 TD1 T18

2. Les fichiers utilisés L'exécutable obtenu s'appelle «a.out» Raison historique! Fichier(s) «point c» Bibliothèque(s).a.so /lib/libc.so Fichier(s) «point h» gcc Binaire exécutable a.out 14/02/11 ASR4 TD1 T19

3. Les options de compilation de gcc Option «c» Arrêt à la phase d'assemblage Obtention d'un module objet Utile en gestion de projet 14/02/11 ASR4 TD1 T20

3. Les options de compilation de gcc Option «o» Donner un nom à l'exécutable autre que a.out 14/02/11 ASR4 TD1 T21

3. Les options de compilation de gcc Option «Wall» Indique l'intégralité des avertissements de compilation Incontournable! 14/02/11 ASR4 TD1 T22

4. Les options d'édition de liens de gcc Option l<bib> : En plus de la bibliothèque standard /lib/libc.so, inclusion de la bibliothèque lib<bib>.a ou lib<bib>.so Option L<cata> : Recherche des bibliothèques dans le répertoire <cata>, puis dans celui par défaut /lib 14/02/11 ASR4 TD1 T23

5. Exemples gcc source.c Compilation et édition de liens du fichier source.c avec inclusion de la librairie standard /lib/libc.so source.c /lib/libc.so gcc source.c Binaire exécutable a.out 14/02/11 ASR4 TD1 T24

5. Exemples gcc source.c o vroum lm Compilation du fichier source.c en un exécutable nommé vroum, avec inclusion de la bibliothèque mathématique «/lib/libm.so» source.c /lib/libm.so /lib/libc.so math.h gcc source.c o vroum lm Binaire exécutable vroum 14/02/11 ASR4 TD1 T25

5. Exemples gcc c source.c Création d un module objet source.o source.c gcc c source.c Module objet source.o 14/02/11 ASR4 TD1 T26

5. Exemples gcc source.c L$HOME/lib lamoi Compilation du fichier source.c avec inclusion de la bibliothèque statique $HOME/lib/libamoi.a source.c $HOME/lib/libamoi.a /lib/libc.so gcc source.c L... l... Binaire exécutable a.out 14/02/11 ASR4 TD1 T27

6 Le rôle du précompilateur #include : inclusion de fichiers «point h» Recherche dans le catalogue par défaut /usr/include : #include<stdio.h> Recherche dans le catalogue courant : #include "entete.h" Recherche dans un autre catalogue : #include "/home/promo/promo2/include/local.h" 14/02/11 ASR4 TD1 T28