una librerias libreria dev crear como c++ gcc compiler-construction g++

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