17Close19
FolcoOn the 2009-10-16 at 05:24pm
andoh_wilfried (./17) :
ça veux dire que le code sera libre je suppose ? c'est quoi la différence avec lib dynamique

Pas nécessairement. Les programmes auront juste besoin d'un header pour savoir comment appeler les fonctions, mais les fonctions elles-même seront dans une librarie statique (un fichier archive, extension .a). Ton code ne sera donc pas visible.

Une lib statique est linkée à la compilation : le code de ta lib est ajouté au programme qui l'utilise à la compilation. Chaque programme utilisant ta lib inclut les morceaux qu'il en utilise.
C'est un fichier archive sur PC.

Une lib dynamique est linkée quand le programme qui l'appelle se lance : les sauts vers les fonctions de ta librarie sont résolus par un kernel, et les programmes qui utilisent ta lib n'en contiennent pas le code.
C'est un fichier "asm" sur la calculatrice.




Ce que tu peux faire en kernel, c'est un programme foutu comme ça :
- les programmes basic appelleront le programme, la fonction main() sera exécutée. A elle de lire les arguments du programme basic pour savoir quelles fonctions doivent être exécutées.
- les programmes C appelleront directement les fonctions exportées du même programme, sans passer par main. Tu leur auras fourni un header pour qu'ils sachent comment passer leurs arguments.

Ca revient donc à faire un seul et unique fichier sur la calculatrice, servant à la fois aux programmes Basic et C. Ca évite d'avoir un wrapper sur calculatrice et une archive sur PC.