2009-11-10 9 views
24

J'utilise code :: blocks pour compiler ma bibliothèque statique. Le résultat de sortie est un fichier libstatic.a. Maintenant, comment puis-je créer un lien vers ma bibliothèque pour utiliser les fonctions qui ont été compilées?Comment lier à une bibliothèque statique en C?

(j'ai essayé d'utiliser #include « libstatic.a » mais mon projet ne compile pas)

Répondre

42
cc -o yourprog yourprog.c -lstatic 

ou

cc -o yourprog yourprog.c libstatic.a 
+0

J'ai essayé le 2ème et ça marche. Merci. Je pourrais aussi être capable de configurer pour que code :: blocks fonctionne aussi. :-) – root

7

Vous devez #include "libstatic.h", à savoir utiliser le fichier d'en-tête approprié dans votre code (qui est pourquoi votre code n » t compilez) et incluez le chemin de votre libstatic.a dans les options de l'éditeur de liens comme l'une de vos bibliothèques d'entrée.

Cette webpage a quelques exemples sur la liaison à une bibliothèque statique, par ex.

gcc -I. -o jvct jvct.c libjvc.a 
+0

merci. enfin je l'ai fait sur des blocs de code et j'ai compris que #include .h fichier pas nécessairement le même nom que le fichier. – root

2

je dû définir le chemin de la bibliothèque dans mon makefile. Pour ce cas, vous pouvez utiliser:

gcc -o myapp main.c -L. -lstatic 
1
gcc -I. -o jvct jvct.c libjvc.a 
0

Pour créer un lien purement statique, utilisez -static

cc -static yourprogram.c libstatic.a 
+0

Notez que cela provoquera le lien statique du compilateur vers les bibliothèques _all_, y compris libc, et produira un binaire lié statiquement. Ce pourrait être ce que vous voulez (ou pas). – WGH