c++ - librerias - ¿Cómo crear una biblioteca estática con g++?
como crear una libreria en dev c++ (3)
¿Puede alguien decirme cómo crear una biblioteca estática a partir de un archivo .cpp y .hpp? ¿Necesito crear el .o y el .a? También me gustaría saber cómo puedo compilar una biblioteca estática y usarla en otro código .cpp. Tengo header.cpp
, header.hpp .
Me gustaría crear header.a
. Pruebe el encabezado.a en test.cpp
. Estoy usando g ++ para compilar.
¿Puede alguien decirme cómo crear una biblioteca estática a partir de un archivo .cpp y .hpp? ¿Necesito crear el .o y el .a?
Sí.
Crea el .o (como por normal):
g++ -c header.cpp
Crea el archivo :
ar rvs header.a header.o
Prueba :
g++ test.cpp header.a -o executable_name
Tenga en cuenta que parece un poco inútil crear un archivo con solo un módulo. Podrías haber escrito tan fácilmente:
g++ test.cpp header.cpp -o executable_name
Sin embargo, le daré el beneficio de la duda de que su caso de uso real es un poco más complejo, con más módulos.
¡Espero que esto ayude!
Crea un archivo .o:
g++ -c header.cpp
agregue este archivo a una biblioteca, creando la biblioteca si es necesario:
ar rvs header.a header.o
usar la biblioteca:
g++ main.cpp header.a
Puede crear un archivo .a
usando la utilidad ar
, así:
ar crf lib/libHeader.a header.o
lib
es un directorio que contiene todas sus bibliotecas. es una buena práctica organizar su código de esta manera y separar el código y los archivos objeto. Tener todo en un directorio generalmente se ve feo. La línea anterior crea libHeader.a
en el directorio lib
. Entonces, en su directorio actual, haga:
mkdir lib
Luego ejecuta el comando ar
anterior.
Al vincular todas las bibliotecas, puede hacerlo así:
g++ test.o -L./lib -llibHeader -o test
La bandera -L
obtendrá g++
para agregar el directorio lib/
a la ruta. De esta manera, g++
sabe qué directorio buscar cuando busca libHeader
. -llibHeader
marca la biblioteca específica para vincular.
donde test.o se crea así:
g++ -c test.cpp -o test.o