Tengo una pregunta: cómo compilar una biblioteca estática en Linux gcc
, es decir, necesito compilar mi código fuente en un archivo llamado out.a. ¿Es suficiente simplemente compilar con el comando gcc -o out.a out.c
? No estoy muy familiarizado gcc
, espero que alguien pueda echarme una mano.
c
gcc
static-libraries
Summer_More_More_Tea
fuente
fuente
Respuestas:
Consulte Crear una biblioteca compartida y estática con el compilador gnu [gcc]
-c
significa crear un archivo objeto intermedio, en lugar de un ejecutable.Esto crea la biblioteca estática.
r
significa insertar con reemplazo,c
crear un nuevo archivo ys
escribir un índice. Como siempre, vea la página del manual para más información.fuente
Aquí un ejemplo completo de makefile:
makefile
explicando el archivo MAKE:
target: prerequisites
- el jefe de la regla$@
- significa el objetivo$^
- significa todos los requisitos previos$<
- significa solo el primer requisito previoar
- una herramienta de Linux para crear, modificar y extraer archivos, consulte las páginas de manual para obtener más información . Las opciones en este caso significan:r
- reemplazar archivos existentes dentro del archivoc
- crear un archivo si aún no existes
- Crear un índice de archivo de objeto en el archivoPara concluir : la biblioteca estática en Linux no es más que un archivo de archivos de objetos.
main.c usando la lib
lib.h el encabezado principal de libs
lib1.c primera fuente lib
lib1.h el encabezado correspondiente
segunda fuente lib2.c lib
lib2.h el encabezado correspondiente
fuente
ar
explicación necesita, ya que es la clave para crear la biblioteca estática.ar
programa crea, modifica y extrae de archivos, que son archivos individuales que contienen una colección de otros archivos en una estructura que permite recuperar los archivos individuales originales.ar
crea un índice de los símbolos definidos en los módulos de objetos reubicables en el archivo cuando especifica los modificadores. (verman ar
)c++
compilador:#ifdef __cplusplus extern "C" { #endif . . . #ifdef __cplusplus } #endif
Genere los archivos de objetos con gcc, luego utilícelos
ar
para agruparlos en una biblioteca estática.fuente