´Editions de liens
8 pages
Français

´Editions de liens

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

  • cours - matière potentielle : precedent
Editions de liens Romaric DAVID LEM2I - Decembre 2011 Plan • Compilation separee • Bibliotheques statiques • Bibliotheques dynamiques • Parametrage de l'edition de liens • Etude de cas 1 La compilation separee Dans le cours precedent, nous avons examine le travail du compilateur sur un unique fichier source. Quand on ecrit un code long, il est preferable de le separer en plusieurs fichiers source afin de faciliter la maintenance (un fichier trop gros serait illisible), la reutilisabilite (si on souhaite reprendre seules quelques fonctions du code) et sa distribution.
  • fichier libtruc
  • linker script
  • chargeur dynamique
  • bibliotheque
  • bibliotheques
  • chemin-mkl -lmkl intel
  • statique
  • code
  • codes
  • programmes
  • programme

Sujets

Informations

Publié par
Nombre de lectures 22
Langue Français
Plan
1
ar´es´epemoCalipnoit
Bibliothe`ques statiques
ioblBiesqu`ethuqimanydse
´ Editions de liens
Romaric DAVID
LEM2ID´ecembre2011
le´detie´rtgadensiondeliemaraP ´ Etude de cas
Lacompilationse´par´ee
Danslecourspre´c´edent,nousavonsexamine´letravailducompilateursurununiquechiersource. Quandone´crituncodelong,ilestpre´f´erabledelese´parerenplusieurschierssourceafin de faciliter la maintenance (un fichier trop gros serait illisible), la re´utilisabilite´ (si on souhaite reprendre seulesquelquesfonctionsducode)etsadistribution.Celapermete´galementder´eduireletempsde compilation. ` Alacompilation,ceschierssourceserontcompile´sse´par´ement(compilation se´pare´e), en plusieurs fichiers objets. Chacun de ces fichiers objets ne contient donc qu’une fraction du code du programme. Dans la dernie`re phase de la compilation, ces fichiers objets seront assemble´s pour ne former qu’un exe´cutable. Cela constitue la phase d’e´dition le liens.
Compilations´epar´ee
La compilation se´pare´e consiste en la cre´ation de plusieursfichiers objets(un par ensemble de fonctions) ` lmeb:lerunepxe´uetcuatsasbejbte,snocihreosrdtiesecarApgfortran a.o b.o c.o o monprog
Ces processus est l’e´dition de liens
1
On peut souhaiter distribuer le code objet afin de son programme afin de le distribuer (pas force´mentgratuitement).Silona´ecritdesfonctionsdebase(solveur,traitementdimage..),ces fonctionsserontre´utilise´esdansdesprogrammes´ecritspardautrespersonnes. Lamani`erelaplussimplederedistribuersoncodeestdefournirleschiersobjet(.o). Ne´anmoins, celapeutˆetrecompliquesiplusieurschiersobjetsontne´cessaires.Deplus,lad´ecompositionen chiersobjetstraduitplutoˆtlamani`erequelonaeudeconstruiresoncodeplutoˆtquesonutilisation. C’est pourquoi il est possible de rassemblerdans un fichier uniqueun ensemble de fichiers objets. Cechieruniquepeuteˆtreconstruitdedeuxmanie`res.Lapremie`reconsiste`aenfaireunpaquet destine´a`eˆtrerecopie´telquel`alandelexe´cutablequilutilisera.Onparlealorsdequ`ethioiblbe statique. On utilise pour cela l’utilitairear.
Distributiondecodeobjet:unproc´ed´esimple
2
´erediffrlesmblesaeseur:taqi´lmeobPr.tejbosreihcstn
:lleibabotlieqh`tseuqitaa(euihcrve)mpsi´eedc´ronpU
ergr´entlderslonoitide´.sneiledAssemblagedecihreosjbte`sia ´ Edition de liens : re´solution des branchements dans le code (appel de fonction = branchement) `alacompilation
Utilisation dear
archive.a fichier1.o fichier2.oar cr
´le´ccae´lrerecharlnsndae,ivrpe´oisnseadestnndexunionctdesfdiiotnidornudcetonstC liens.
:mentelleviduniidbielopsse)ts(eviihcosretejbosmptsanldecharmasi`ejauodrseocLar r archive.a objet.o
Bibliothe`ques statiques
Utilisationdelabiblioth`eque
Utilisation du nom/chemin complet a` la compilation
iteu´ediensrdelalece:pmteonemtnm(cidnIla`noitaconvention sur le nom)
R´esultatidentique:recopiedelensembleducodeobjetdanslex´ecutable.
:enommgaedonitnooth`ibliedebparleuqe(ennvColibrary)
useniblbsenedtnabeoelset.appeli´oetuhn`seyqmunUioctr´npmdnoonef
Si l’on nomme l’archivelibmesfonctions.a
• ⇒asilnoititUepareg´eabr´lmesfonctions
2
Indiquer l’emplacement :/nevehimLc/euq`ethioblbia//lrs
Lecompilateurutilisecertainscheminsderecherchedesbiblioth`equesparde´faut.Parexemple, pour le compilateur commercial intel V12, on trouve entre autres /opt/intel/composerxe2011.1.107/compiler/lib/intel64 \ /usr/lib/gcc/x86_64redhatlinux/4.1.2 \ /usr/lib/gcc/x86_64redhatlinux/4.1.2/../../../../lib64 \ /usr/lib/gcc/x86_64redhatlinux/4.1.2/../../.. \ /lib64 \ /lib \ /usr/lib64 \ /usr/lib \
Lordredansl´editiondeliensestimportante:lessymbolesdunebiblioth`equenesontpris encomptequesilssontutilis´esparunobjetouunebibliothe`quepre´sentsavantdans la ligne de commande. Ainsi,siunebibliothe`queb2de´pendde(utilisedessymbolespr´esentsdans)unebiblioth`eque b1,b1devragurerapre`sb2danslaphased´editionsdeliensstatiques.Celaestproble´matiquesil existedesde´pendancescirculaires:certainesbiblioth`equesdevrontgurer2fois(ouplus...)surla ligne de commande.
Quelques ennuis...
rsdnreeOontilidel`adi´e
De´pendances circulaires
uoepemtnsireelrgUtilorpundgl,e.aWa.abpuorgtrats,lWesqu`ethioblbide
Caracte´ristiquesdesbiblioth`equesstatiques
nocsellE`tnesiudecx´neauauleabutotsfusna(tpaepl´eex´ecutablestqita)eu
ndan´epetindutˆoyststaud´tedtleirnveeltd(eme`eorpudtnemennosniAl,i´eextacueeblplst cessus)
sgubedno)...conv´eniInmedoiacne:tottubilaioblontinsdarrocitcee`ht(euqexige une recompilation de code final de l’utilisateur !
tnse´eprstseueeqh`Sipselilentˆesmsbmeisulsrueedocituscodedecesbibliotbiilto`hqeeu,sel plusieursfoisenm´emoire.
Lesbiblioth`equesstatiques,siellespermettentdedistribuerunensembledefonctions,constituentunproce´d´elimit´e: sruitnomoamocsndo,eusiedeploirem´emednossermosnitamllaiucedrcou(tesDanssaco codeutilisantlameˆmebiblioth`eque,parexemplelesprocessusduneapplicationparalle`le)
odscleusisilutesibenutnae`htoilbt´edcule`ajemisopruuo:rerotemttDssnafidaeuqseuqitat `ajourapr`esmise`ajourdecettederni`ere,ilfautlesrecompiler.
3