Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
documentation:tutorials:build:links [2013/02/19 16:05] – [Utilisation de la version statique] ltaulelldocumentation:tutorials:build:links [2023/01/13 09:42] (Version actuelle) – supprimée ccalugar
Ligne 1: Ligne 1:
-====== L'édition de liens (linkage) d'une librairie ====== 
- 
-Exemple avec la librairie **HDF5** en version **1.8.9** 
- 
-===== Linkage Statique ou Dynamique ===== 
- 
-Dans le sous-répertoire ''lib'' du répertoire d'installation ''/softs/Hdf5/1.8.9/gnu/4.6.3'' on peut voir que la librairie est disponible en statique et dynamique : 
- 
-<code> 
-$ ls /softs/Hdf5/1.8.9/gnu/4.6.3/lib 
-libhdf5.a 
-libhdf5.so 
-... 
-</code> 
- 
-Que se soit en statique ou en dynamique, pour utiliser cette librairie, à l'édition de liens (étape de compilation), il faut rajouter : 
-<code> 
- -L/softs/Hdf5/1.8.9/gnu/4.6.3/lib -lhdf5  
-</code> 
- 
-===== Utilisation de la version dynamique ===== 
- 
-Par défaut, c'est la version dynamique qui est d'abord cherchée à l'édition de liens. Dans ce cas, à l'exécution du programme (p.ex sur les nœuds), la variable ''LD_LIBRARY_PATH'' devra contenir le chemin de la librairie dynamique. Pour cela, rajouter cette ligne dans le script d'exécution : 
- 
-  * Pour csh (et tcsh) : 
- 
-<code bash> 
-setenv LD_LIBRARY_PATH "/softs/Hdf5/1.8.9/gnu/4.6.3/lib:$LD_LIBRARY_PATH" 
-</code> 
- 
-  * Pour sh (et bash) : 
- 
-<code bash> 
-export LD_LIBRARY_PATH="/softs/Hdf5/1.8.9/gnu/4.6.3/lib:$LD_LIBRARY_PATH" 
-</code> 
- 
-===== Utilisation de la version statique ===== 
- 
-Pour linker avec la version statique, il faut utiliser l'option ''-static''. Exemple : 
- 
-<code> 
-gcc ... -static ... -L/softs/Hdf5/1.8.9/gnu/4.6.3/lib -lhdf5 ... 
-</code> 
- 
-===== Remarques ===== 
- 
-==== -static ==== 
-Utiliser l'option ''-static'' implique de linker toutes les librairies en statique. Pour que seule la librairie voulue (ici libhdf5) soit liée en statique, utiliser le nom complet de la librairie : 
- 
-<code> 
-gcc ... -static ... -L/softs/Hdf5/1.8.9/gnu/4.6.3/lib/libhdf5.a ... 
-</code> 
- 
-==== Disponibilité ==== 
- 
-La discussion ci-dessus se pose seulement si les deux versions (statique et dynamique) sont installées (comme pour HDF5). Si pour une autre librairie seule l'une des versions (statique ou dynamique) est installée, il suffit de rajouter ''-L/répertoire_de_recherche -lnom_librairie'' pour linker avec ''libnom_librairie.a'' (ou ''libnom_librairie.so''). 
- 
  
documentation/tutorials/build/links.1361289943.txt.gz · Dernière modification : 2020/08/25 15:58 (modification externe)