2012-05-04 23 views

Respuesta

1

El archivo .a es una biblioteca, ya compilada. Usted compila su archivo .c a .o, luego usa el enlazador para vincular su .o con .a para producir un ejecutable.

+3

No contesta la pregunta sobre * cómo * hacerlo. No dice "cómo se verá". – mtahmed

14

Para los casos simples es probable que pueda hacer esto:

gcc -o maybe.exe useful.a something.c 

Makefile para proyectos no triviales generalmente primero invocar gcc para compilar cada archivo .c a un objeto .o.

gcc -c something.c 

Luego invocar el enlazador (en estos días a menudo se utiliza gcc como un contenedor para ello) con una lista de archivos .o y .a para enlazar en un archivo ejecutable de salida.

gcc -o maybe.exe useful.a something.o 

Tenga en cuenta también que la mayoría de las bibliotecas instaladas, es típico que no especifica explícitamente el archivo .a pero en lugar de decir -lhandy que sería la abreviatura de "tratar de encontrar algo que se llama en el libhandy.a configurado (o especificada con -L) directorios de búsqueda"

+0

Gracias a anonymous para detectar el error en la generación del archivo de objeto –

4

*.a es una biblioteca estática y no dinámica (*.dll en ventanas y *.so en linux)

gcc -L<here comes the library path> -l<library name> 

por ejemplo, para el archivo que tiene lib .a en el actual camino que debe utilizar:

gcc *.c -L. -lname -o myprogram.o 

del man (gcc poner al hombre en la línea de comandos shell)

Usted puede mezclar opciones y otros argumentos. En su mayor parte, el orden que utiliza no importa. El pedido importa cuando usa varias opciones del mismo tipo; por ejemplo, si especifica -L más de una vez, los directorios se buscan en el orden especificado. Además, la ubicación de la opción -l es significativa.

+0

Modificado 'gcc -L -l ' de 'gcc -l -l '. Espero que eso sea lo que querías decir –

+0

¿Por qué usas '-lname' si la librería es' libname.a'? – this

+0

Lee http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html – 0x90

Cuestiones relacionadas