4

Click here to load reader

Développer sous Linux Comment faire ? Comment … · Pour assurer la réussite d’un développement applicatif sous Linux, il est important de bien cibler les objectifs. Ceux-ci

  • Upload
    dohanh

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Développer sous Linux Comment faire ? Comment … · Pour assurer la réussite d’un développement applicatif sous Linux, il est important de bien cibler les objectifs. Ceux-ci

1

Développ er sous LinuxComment faire ?

Comment choisir ?*

Pour assurer la réussite d’un développement applicatif sous Linux, il est important de bien cibler lesobjectifs. Ceux-ci conditionneront à la fois les outils et les langages de programmation à utili ser.

* Cet article est paru dans le numéro 189 de « l’ Informatique Professionnelle », au mois de Décembre 2000.

Le choix d’effectuer le développement d’unlogiciel en langage C ou C++ sous Linuxrecouvre en réalité deux prises de décision. Enpremier lieu, on fait le choix d’un systèmed’exploitation. L’utili sation de Linux commeenvironnement de développement est une optionnouvelle dans le milieu industriel. La secondedécision concerne le langage et lesbibliothèques employées. D’autres langagessont en effet disponibles, et il faut être enadéquation avec le but final de l’applicationainsi que le public visé. Nous allons examinerici les possibilit és qu’offrent les outil sdisponibles sous Linux pour une bonneréalisation logicielle en langage C ou C++.

Développ ement sousLinuxNous avons indiqué que le choix de la plate-forme Linux pour effectuer un développementlogiciel est déjà une décision importante.Plusieurs motivations peuvent être à l’origine dece choix. Tout d’abord, Linux constitueprobablement le meill eur système d’exploitationpour la diffusion de logiciels libres. L’esprit quianime la communauté Linux est tel qu’unnouveau projet est généralement bien accueill i,et l’enthousiasme des participants permet laprogression rapide d’un logiciel, pour peu quel’équipe soit suff isamment motivée.

Ce type de choix n’est plus seulement le faitd’amateurs ou d’étudiants, mais certainesentreprises ont déjà compris l’ intérêt immédiatque présente pour elles l’adhésion à la logique

des logiciels libres. C’est le cas, par exemple, decertains fabricants de périphériques pourordinateurs : il s diffusent les spécificationstechniques de leur matériel et fournissent uneassistance pour le développement de driverslibres permettant le fonctionnement sous Linux.

Le choix du système Linux commeenvironnement de développement peut aussiêtre motivé par la qualité des outils présents« librement » et la richesse de la documentationdisponible sur Internet. Dès son installation,toute distribution Gnu / Linux comprend tousles outil s logiciels nécessaires au programmeur– éditeurs, compilateurs, débogueurs – et cepour l’ensemble des langages informatiquescouramment employés.

De plus le portage des applications vers d’autresenvironnements Unix est souvent très rapide,puisqu’ il ne nécessite qu’une simplerecompilation des fichiers source. Il est alorspossible de disposer de stations dedéveloppement de type PC, puissantes etéconomiques. Notons également que Linux, loind’être limité aux PC, est disponible sur un largeéventail de machines. Les applications tournantsous ce système disposent ainsiautomatiquement d’une portabilité « interne »sur une gamme complète d’architectures et deprocesseurs différents.

Cependant, la motivation la plus fréquente pourle développement sous Linux, est toutsimplement le choix de ce système commeplate-forme applicative finale. Cette solution estdepuis plusieurs années retenue dans denombreux laboratoires, centres d’études, etc.L’utilisation de Linux comme environnement

Page 2: Développer sous Linux Comment faire ? Comment … · Pour assurer la réussite d’un développement applicatif sous Linux, il est important de bien cibler les objectifs. Ceux-ci

2

principal dans le domaine des applicationsindustrielles est plus récente, mais une fois lesréticences initiales vaincues, on assistegénéralement au sein d’une entreprise à uneprogression lente mais continue du parc demachines fonctionnant sous Linux.

Pour assurer la réussite d’un développementapplicatif sous Linux, il est important de biencibler dans quelle catégorie s’ inscrit le produit :logiciel li bre diffusé sur Internet ou réservé à unusage interne ; application destinée à êtrelargement portée sur d’autres systèmesd’exploitation ou au contraire limitée à uneutilisation uniquement sous Linux. Ceci influe àla fois sur les outil s et langages deprogrammation à employer, et sur les butsprioritaires que l’équipe de développeurs devrase fixer.

Choix du langageDans le monde industriel, l’un des points fortsles plus appréciés du système Linux est sastabil ité remarquable. Les stations configuréescorrectement peuvent présenter des temps defonctionnement ininterrompu très longs. Lesseuls arrêts du système sont alors dus auxcomposants matériels, et pas au logiciel. D’oùdes taux de disponibilité du systèmeparticulièrement élevés, ce qui est très précieuxdans certains types d’application.

L’exemple le plus fréquemment cité est celui duserveur web. Le logiciel li bre Apache est trèsutilisé pour constituer des serveurs performantset peu coûteux sous Linux. Pour configurer etpersonnaliser un serveur réseau, on emploiesouvent le langage Perl, qui permet d’écrirerapidement de petits scripts puissants, pourdynamiser le contenu des pages web,programmer des robots logiciels gérant desli stes de diffusion ou encore trier et répartir lecourrier ou les articles Usenet.

Pour des applications nécessitant uneimplication technique plus importante, leslangages les plus utili sés sont le C et le C++. Larapidité et la puissance des applicationsproduites constituent des arguments de choix.En contrepartie, la portabilité est un peu plusrestreinte, essentiellement en ce qui concernel’ interface utili sateur. En fait, le noyau Linux,ainsi que tous les utilitaires système, sont écritsen C. L’emploi de ce langage permet doncd’accéder facilement aux ressources de basniveau indispensables dans certainesapplications (interfaçage, écriture de pilote depériphérique, etc.) Le langage C offre desavantages techniques en termes de puissance et

de rapidité convenant tout particulièrement auxapplications scientifiques et industrielles. Deplus, en tant que langage compilé, il fournit unfichier exécutable autonome, ce qui assure laconfidentialité des algorithmes utilisés dans lessources. Cet aspect constitue, dans certainescirconstances, un avantage réel sur les langagesinterprétés.

L’environnement graphique utili sé sous Linux,comme pour les autres Unix, est le système X-Window. Ce système très puissant estparticulièrement intéressant sur des machines enréseau, car il permet de déporter des aff ichagessur des stations distantes. X-Window n’ imposeque très peu d’obligations en terme d’aspect oude comportement des applications. C’estpourquoi de nombreuses bibliothèquesgraphiques différentes coexistent, compliquantparfois quelque peu le portage des applications.

Sous Linux, deux environnements graphiquesprincipaux existent actuellement : le systèmeGnome, issu du projet Gnu, et le système KDE.L’un comme l’autre sont installésautomatiquement avec la plupart desdistributions actuelles, et c’est l’utilisateur quichoisit son environnement favori lors de laconnexion. Ces environnements jouent surl’aspect et le comportement des fenêtres (menusystème, bordures, réaction à la souris, etc.),mais ont aussi un rôle important dans lacommunication entre les applications.

Choisir d’utili ser l’environnement Gnome ouKDE pour l’ interface utilisateur d’uneapplication n’est donc pas une action innocente.D’autant qu’il faut alors être conscient que laportabilité de l’application hors de l’universLinux est largement diminuée. Une autrepossibilit é est d’employer une bibliothèqueportable sur l’ensemble des systèmes Unix.L’environnement Motif s’est imposé commestandard de fait dans les systèmes informatiquesindustriels. Il en existe plusieursimplémentations commerciales sous Linux,ainsi qu’une implémentation libre nomméeLesstif. L’utili sation de ces bibliothèquespermet d’assurer une certaine portabilité desapplications graphiques, tout en conservantl’efficacité et les performances d’un langagecompilé proche de la machine.

Outils de développementLes outil s de développement disponibleslibrement sous Linux sont étonnammentpuissants. Au cœur de la programmation enlangage C ou C++ se trouve naturellement lecompilateur. Celui que l’on emploie sous Linux

Page 3: Développer sous Linux Comment faire ? Comment … · Pour assurer la réussite d’un développement applicatif sous Linux, il est important de bien cibler les objectifs. Ceux-ci

3

se nomme GCC. Il s’agit d’un compilateurproduit par le projet Gnu, dont le but est defournir librement des logiciels de remplacementpour tous les utilitaires système et outil s dedéveloppement sous Unix. Le compilateur GCCn’a rien de spécifique à Linux, il est disponiblesur de nombreux autres Unix, et un portage amême été réalisé sous Dos. La qualité de GCCest telle que certains le préfèrent auxcompilateurs natifs vendus sur les stations Unixclassiques. Il représente également unealternative intéressante aux compilateurs trèscoûteux, puisqu’il permet d’équiper facilementet à moindre frais toutes les stations desdéveloppeurs d’une équipe. GCC se décline enplusieurs versions installées conjointement,selon que l’on préfère utili ser le langage C, leC++, voire le dialecte Objective C. Les trèsnombreuses options disponibles pour ajuster laconfiguration du compilateur permettentd’adapter son comportement aux désirs duprogrammeur, notamment en ce qui concerneles respects des normes les plus courantes(Posix, Iso C99…)

Le compilateur GCC est un outil fonctionnanten ligne de commande, qu’on peut donc lancerdirectement « à la main » en indiquant lesoptions désirées et les fichiers sources àcompiler. Cet utilitaire n’effectue qu’une seuletâche, mais il la réali se au mieux, sans que desconsidérations d’ interface utili sateur neviennent le distraire de son rôle. Pour améliorerl’ergonomie du programmeur, il existe toutefoisun certain nombre d’environnements dedéveloppement intégré, qui regroupent unéditeur de texte pour la saisie des fichierssource, et des composants graphiques (boutons,menus…) pour invoquer directement lecompilateur en arrière-plan, en s’assurant del’emploi des options correctes. Cesenvironnements permettent aussi l ’appel dudébogueur Gnu, nommé GDB. À l’ instar ducompilateur, cet outil fonctionne par uneinvocation depuis une ligne de commande, puisil offre une interface utili sateur minimale. Lesenvironnements de développement intégrél’encadrent et présentent une interfacegraphique plus attrayante, en permettantl’exécution d’un programme instruction parinstruction, l’ inspection des variables, etc.

Le projet Gnu regroupe une panoplie complèted’outil s destinés à assister le travail dudéveloppeur. Citons par exemple les utilitairesd’archivage permettant de créer desbibliothèques de fonctions personnalisées, lesenjoli veurs de code source pour uniformiserl’aspect des fichiers créés par les différentsmembres d’une équipe, les outils RCS ou CVSqui assurent le contrôle de version et permettent

ainsi le travail simultané par plusieursdéveloppeurs sur le même projet en minimisantles risques de modifications concurrentielles.

Documentation etexemplesLa richesse de la documentation disponibleconcernant l’environnement Linux fait partiedes caractéristiques de ce système qui sont lesplus attrayantes pour les programmeurs. On peuttrouver sur Internet des sites regroupant desinformations de grande qualité dans tous lesdomaines intéressant le développeur.

En ce qui concerne l’environnement Linux engénéral, l’ installation et la configuration desapplications ou l’administration du système onconsultera les documents HOW-TO, traduits enfrançais, et qui regroupent des informations surla plupart des sujets importants pourl’utili sateur. Pour vérifier la syntaxe d’appeld’une routine de la bibliothèque C, pourconnaître la signification d’un appel-système(c’est à dire un service offert par le noyau Linuxlui-même) ou encore pour étudier le détail detoutes les options proposées par une application,il existe une commande MAN dont l’ invocationest très commode. Elle donne accès à desfichiers indépendants, que l’on nommehabituellement « pages de manuel » paranalogie avec les classeurs de documentationli vrés avec les Unix traditionnels. Chaque page(qui peut représenter parfois une dizaine depages imprimées) contient la documentationpour une routine de la bibliothèque C, un appel-système ou un utilitaire. Il existe environ millepages de manuel pour Linux actuellementtraduites en français.

Le programmeur pourra toujours consulter à songré les sources du noyau ou celles de labibliothèque C, ce qui représente non seulementune source d’ information exacte en ce quiconcerne une fonctionnalité précise, maiségalement des exemples performants et souventélégants, d’ implémentation d’algorithmes1.

Les fonctionnalités offertes par le noyau Linuxet les routines de plus haut-niveau proposées parla bibliothèque C standard ne sont que rarementsuffisantes pour la réali sation d’une application

1 Ceci est d’ail leurs vrai pour l’ ensemble des applicationsdisponibles sous Linux, la plupart des distributionsfournissant d’ emblée plusieurs centaines de mégaoctets defichiers sources immédiatement consultables.

Page 4: Développer sous Linux Comment faire ? Comment … · Pour assurer la réussite d’un développement applicatif sous Linux, il est important de bien cibler les objectifs. Ceux-ci

4

complète. Nous avons déjà abordé la questionde l’ interface graphique généralementindispensable. Mais il est souvent nécessaire defaire appel à d’autres bibliothèques réali sant destâches diverses. Citons par exemple l’existencede bibliothèques intégrant des algorithmes decompression, de cryptage, de lecture de fichiersgraphiques dans la plupart des formats usuels.Citons aussi la possibilit é d’accéder aux objetsdisponibles sur un bus Corba ou encored’utili ser des passerelles vers d’autres langagesde développement comme Python, Perl ouTcl/Tk. Toutes ces bibliothèques sontdisponibles sous forme de code sourcelibrement consultable et adaptable à des besoinsspécifiques.

ConclusionPour conclure cette présentation rapide,j’aimerais insister sur l’aspect intellectuellementmotivant que représente, pour un programmeur,la possibilit é de travailler dans unenvironnement où il est possible d’avoir accèsau fonctionnement interne du système dans sesmoindres détail s, où rien ne reste dissimulé àqui désire obtenir des informations, et où laqualité des outils et l’assistance disponible parInternet font que l’on ne reste jamais bloquéface à un dysfonctionnement d’un utilitairesystème.

Christophe Blaess <[email protected]>

Pour aller plus loin« Programmation système en C sous Linux » Christophe Blaess, éditions Eyrolles.

Le site de l’auteur, et les pages de manuels Linux traduites en français : http://perso.club-internet.fr/ccb

Liens de documentation française sur Linux : http://www.linux-center.org/ fr

Ensemble de liens internationaux sur Linux : http://www.linux.org/

Le projet Gnu : http://www.gnu.org/home.fr.html