Ne comprend pas la compilation avec gcc et les bibliothèques

Ne comprend pas la compilation avec gcc et les bibliothèques - C - Programmation

Marsh Posté le 22-10-2011 à 19:14:42    

Salut,  
 
Je voudrais compiler un programme avec gcc sous debian et pour ça j'ai suivie ce tuto : http://www.linux-pour-lesnuls.com/compilergcc.php
 
J'ai comme fichier  
le main :  
- temp.c
avec :
#include <stdlib.h>
#include <stdio.h>
#include "ownet.h"
#include "temp10.h"
#include "findtype.h"
 
les bibliothèques :
- crcutil.c
- findtype.c
- findtype.h
- ioutil.c
- ownet.h
 
Je ne comprends pas quel ligne de commande je dois taper pour compiler tout ça, je comprends pas non plus la différence entre les bibliothèques statiques et dynamiques.
 
Merci de votre aide.

Reply

Marsh Posté le 22-10-2011 à 19:14:42   

Reply

Marsh Posté le 23-10-2011 à 12:38:52    

gcc -Wall temp.c crcutil.c findtype.c ioutil.c -o moBinaire

Reply

Marsh Posté le 23-10-2011 à 15:09:32    

Une bibliothèque statique est une bibliothèque dont le code est directement intégré dans l'exécutable au moment de l'édition des liens ( .a sous linux, .lib sous windows ).
 
Une bibliothèque dynamique est une bibliothèque dont le code sera chargé dynamiquement lorsque l'exécutable en aura besoin ( .so sous linux, .dll sous windows). Avantage:  si plusieurs exécutables ont besoin de cette bibliothèque, elle ne sera chargée qu'une fois en mémoire. L'inconvénient est quand on utilise des versions différentes d'une même bibliothèque dans plusieurs programmes.
 
la bibliothèque dynamique peut être chargée de 2 façons :
    - soit dès que l'exécutable se lance. Ce qui signifie que si la bibliothèque n'est pas présente, l'exécutable ne peut pas se lancer car la bibliothèque manque ( ldd sous linux, process explorer ou autre sous windows pour voir les liens dynamiques) .
    - soit à la demande en utilisant des fonctions de chargement dynamique : dlopen / dlclose /dlsym sous linux, LoadLibrary / FreeLibrary / GetProcAddress sous windows. Dans ce cas, la non-présence de la bibliothèque peut ne pas empêcher l'exécutable de se lancer. Ex : vlc charge de cette façon la les plugins, il serait trop lourd d'installer systématiquement toutes les dépendances de vlc ( il y en a des centaines ) sur une machine surtout si on n'en a jamais besoin. VLC sait détecter la présence et utiliser en cas de besoin.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed