2009-11-10 30 views
24

que use el código :: bloques para compilar mi biblioteca estática. El resultado de salida es un archivo libstatic.a. Ahora, ¿cómo puedo acceder a mi biblioteca para usar funciones que fueron compilados?¿Cómo vincular a una biblioteca estática en C?

(He intentado utilizar # include "libstatic.a", pero mi proyecto no compila)

Respuesta

42
cc -o yourprog yourprog.c -lstatic 

o

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

probé el segundo y funciona. Gracias. también podría configurar para que code :: blocks funcione también. :-) – root

7

Debe #include "libstatic.h", es decir, utilizar el archivo de cabecera apropiado del código (que es por qué su código doesn' t compilación) e incluir la ruta a su libstatic.a en las opciones del enlazador como una de sus bibliotecas de entrada.

Este webpage tiene algunos ejemplos en la vinculación a una biblioteca estática, por ejemplo

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

gracias. Finalmente lo tengo hace en bloques de código y me di cuenta de que # include .h no es necesario el mismo nombre que el archivo .a. – root

2

que tuvieron que ajustar la ruta de la biblioteca en mi makefile. Para este caso se puede utilizar:

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

Para vincular puramente estática, utilice -static

cc -static yourprogram.c libstatic.a 
+0

Tenga en cuenta que esto hará que el compilador para enlazar estáticamente a _todas_ bibliotecas, incluyendo libc, y producirá binario enlazado estáticamente. Puede ser lo que quieras (o no). – WGH

Cuestiones relacionadas