proyecto de C ++

Utilizar el medio ambiente bajo centos7

Estático y librerías dinámicas: Cuando hay que poner un poco común características empaquetados juntos, por el momento, después de la llamada. Antes de nosotros es una parte común de la escritura extraído un archivo xxx.h y xxx.cpp, y luego introducido archivos de cabecera xxx.h en nuestro programa principal, entonces el programa principal en tiempo de compilación y xxx. compilar con cpp.

De hecho, hay dos procesos en tiempo de compilación, el programa principal en primer lugar main.cpp y xxx.cpp pública fueron compilados en dos archivos binarios, y luego unidos entre sí para formar un archivo ejecutable.

Por encima de esta dependencia otro código de manera común en C ++ puede ser compilado como forma dependiente a una biblioteca de referencia.

Compilado por la biblioteca se divide en dos tipos: las bibliotecas estáticas y dinámicas.

 

biblioteca estática: Cuando se compiló la parte superior del público como una biblioteca estática cuando al utilizar la biblioteca del compilador estática enlazará con la biblioteca estática y el paquete principal de código de programa para generar el archivo ejecutable. un archivo ejecutable por ejemplo puede ser generada será más engorroso, pero cuando se ejecuta más rápido, y porque las cosas se necesitan son todos empaquetados juntos, la implementación de portabilidad de este documento es mejor. Hay, si actualizamos el archivo de la biblioteca, a continuación, la necesidad de introducir la biblioteca principal actualizado reenvasado.

Generación y uso de la biblioteca estática:

Código archivo _public.h

#include <stdio.h>

sayhello void ();

Código archivo _public.cpp

# include "./_public.h"

sayhello vacío ()

{

  printf ( "hola ~ \ n");

}

El archivo de programa principal: test.cpp

# include "./_public.h"

sayHello ();

En primer lugar _public.c compilado en un archivo binario .o: g ++ -c _public.cpp. Después de la finalización del directorio actual generará un archivo de _public.o

Por herramienta empaquetado ficheros objeto ar en .a archivos de biblioteca estática: ar -crv lib_public.a _public.o. Tras la finalización lib_public.a generará un archivo en el directorio actual, el archivo es un archivos de biblioteca estática

El paquete genera un archivo ejecutable con los principales archivos de programa y archivos de bibliotecas estáticas: g ++ -o test.cpp prueba -L./ -l_public. L se utiliza para especificar el directorio en la biblioteca estática, biblioteca estática que lo haría tan directamente ./ en el directorio actual. -l es el nombre detrás con las referencias de biblioteca estática (para deshacerse de la lib anterior y el sufijo .o)

./Test a continuación, ejecutar la prueba ejecutable resultante

 

DLL: biblioteca dinámica en el tiempo de montaje y no está conectado al código objeto, pero el programa fue sólo se carga en funcionamiento. Las diferentes aplicaciones si se llama a las mismas bibliotecas, sólo para tener una copia de la biblioteca compartida en la instancia de memoria, para evitar problemas de espacio desperdiciado. programa de la biblioteca dinámica es plazo sólo se cargó, sino también a resolver las actualizaciones de bases de datos estáticos en el programa, implementar y publicar páginas traerán problemas. Los usuarios sólo necesitan actualizar la biblioteca dinámica, actualizaciones incrementales.

También en el código anterior se compila como una biblioteca compartida y el flujo de llamada es el siguiente:

En primer lugar _public.c compilado en un archivo binario .o: g ++ -fPIC -c _public.cpp. Después de la finalización del directorio actual generará un archivo _public.o, -fPIC crear dirección independiente del compilador (pic, código independiente de posición), para ser compartido entre varias aplicaciones.

.So generar archivo de biblioteca de vínculos dinámicos: g ++ -shared -o lib_public.so _public.o. Después de la finalización del directorio actual generará un archivo lib_public.so se genera librería de enlace dinámico.

Generar un archivo ejecutable: g ++ -o test1 test.cpp -L./ -l_public

El resultado lib_public.so copiar archivos a / usr / lib porque el defecto g ++ para encontrar la dirección de las bibliotecas dinámicas: cp lib_public.so /usr/lib/lib_public.so.

Ejecutar el comando: ldconfig. Este comando se utiliza para actualizar la lista de bibliotecas con el fin de ser capaz de copiar en nuestra nueva biblioteca g ++ archivos se pueden encontrar.

Ejecutar el programa: ./ test1

 

Supongo que te gusta

Origin www.cnblogs.com/maycpou/p/12605681.html
Recomendado
Clasificación