A. Conceptos de biblioteca estática
1. Una biblioteca es una colección de archivos de objetos precompilados que se pueden vincular a un programa. El sufijo de biblioteca estática es un almacenamiento especial de archivos de almacenamiento de " .a ".
2. La biblioteca estándar del sistema se puede encontrar en los directorios /usr /lib y /lib. Por ejemplo, en un sistema similar a Unix, la biblioteca de secuencias de orden C generalmente se almacena como el archivo /usr/lib/libm.a. El prototipo de la función en esta biblioteca se declara en el archivo de encabezado /usr/include/math.h.
La biblioteca estándar 3.C se almacena como /usr/lib/libc.a, que contiene funciones especificadas por el estándar ANS1 /ISO, como printf. Para cada programa de C, libc.a está vinculado de forma predeterminada.
4. Un ejemplo:
Llame a la función sin en una biblioteca matemática libm.a en el programa tiger.c.
# incluye < stdio.h > # incluye < math.h > int main () {double x = 2.0; double y = sin (x); printf (" el resultado:% f \\ n " , y); return 0;}
Si usa gcc tiger.c directamente, recibirá un error:
referencia no definida a ‘ sin ’;
1 > La función sin () no está definida en el programa ni en la biblioteca predeterminada ’ libc.a ’ a menos que se especifique, el compilador no enlazará ’ libm.a ’.
2 > Para que el compilador vincule sin () con el programa principal ‘ test.c ’, debe proporcionar la biblioteca matemática ’ libm.a ’.
3 > Cómo utilizar:
gcc tiger.c /usr/lib/libm.a -o tiger
Luego puedes compilarlo. Para evitar especificar rutas largas en la línea de comandos, el compilador proporciona una opción rápida para la biblioteca vinculada "ld"; - l ". Por lo tanto, puede usar el siguiente método:
gcc tiger.c -lm – o tiger
Nota: La opción -lNAME usa el vinculador para intentar vincular el archivo de biblioteca libNAME.a en el directorio de bibliotecas del sistema. .
2. Genere y use bibliotecas estáticas
1. Las bibliotecas estáticas son una colección de archivos obj, generalmente las bibliotecas estáticas están marcadas con el sufijo " .a ". La biblioteca estática es generada por el programa ar.
2. La ventaja de la biblioteca estática es que puede volver a vincular el programa sin volver a compilar el código de la biblioteca. Este método ahorra el tiempo del proceso de compilación (al compilar programas grandes, requiere un costo Durante mucho tiempo). Otra ventaja de las bibliotecas estáticas es que los desarrolladores pueden proporcionar archivos de biblioteca a las personas que utilizan, sin la necesidad de un código fuente abierto, que es un método común utilizado por los proveedores de funciones de biblioteca.
3. Use un ejemplo para entender cómo generar bibliotecas estáticas y usar bibliotecas estáticas.
Primero genere bibliotecas estáticas
1 > Hay tres archivos en la carpeta de prueba: main .c, tiger.c, tiger.h;
a. El contenido del archivo main.c:
# include < stdio.h > # include " tiger.h " //Note Incluya este archivo, no solo vincule el archivo .a con int main (void) {printf (" sum =% d \\ n ", add (3,5)); return 0;}b.tiger Qué hay en el archivo .h:
#ifndef __TIGER __ # define __TIGER__int add (int a, int b); # endifContenido en el archivo c.tiger.c
int add (int a, int b) {return a + b;}2 > El paso más básico para crear una biblioteca estática es generar el archivo de destino tiger.o
gcc -o tiger.o -c tiger.c
3> Luego genere la biblioteca estática libadd.a:
ar -rcs libadd.a tiger.o
En segundo lugar use la biblioteca estática
1 > El comando Gcc con el archivo de la biblioteca es correcto
gcc -o main main.c libadd.a
2 > También puede usar el comando " -l nombre de la biblioteca " Aceptar, el nombre de biblioteca no contiene las bibliotecas de cuerda y extensiones de la biblioteca.
gcc -o main main.c -ladd
Después de ejecutar el comando anterior, el sistema devuelve:
No se puede encontrar – ladd
Explicación: El comando anterior buscará la biblioteca de funciones de adición en la ruta predeterminada del sistema Xi'an y la vinculará al programa de destino que se generará. El sistema solicita que no se encuentre el archivo de biblioteca. Esto se debe a que la función de biblioteca de agregar no se encuentra en la ruta de búsqueda predeterminada del sistema. Tenemos que pensar en la ruta de la función de biblioteca especificada. Por ejemplo, el archivo de biblioteca y el archivo compilado actual están en el mismo directorio: gcc .c -L ./-ladd
El sistema puede generar archivos ejecutables normalmente.
Descripción:
Al usar la opción -l, el nombre de destino de la opción -o debe estar antes del nombre de biblioteca del enlace -l, de lo contrario, gcc pensará que -l es el objetivo de la compilación y se produce un error.
1. Introducción al firewall Concepto de firewall El firewall puede filtrar informes de dato
El entorno de instalación es Ubuntu 13.10 versión i386. El servidor nginx y el servidor mys
1, instale Java (aquí asumiendo que el directorio de instalación bit /usr /local) 1) Desc
usa inux system para olvidar la contraseña de root. ¿Qué sucede si se encuentra en una situación así
Ver la ocupación del puerto del comando GNU /Linux
En ctags y Ubuntu taglist instalación, simplicidad
Centos7 modifica el número de puerto SSH
Aprendizaje de comandos de Linux - netstat
Aprendizaje de salida redirigida en Linux
Nota pequeña El proceso de limpieza de virus IptabLes e IptabLex
Análisis del proceso de arranque de Linux-0.11
Introducción a la instalación y configuración básica de vim en Ubuntu
Tutorial de configuración de cambio de plan de energía de Win8
Win7 jugar Diablo 2 flower screen cómo hacerlo
¿Cómo agregar amigos de wechat? ¿Cómo agregar amigos a WeChat?
El programa de Word del sistema Win7 no responde, no quiere finalizar el proceso cómo hacerlo
El sistema Win10 no puede usar el navegador perimetral para reproducir video en la web
Versión DNF86 Jian Hao habilidades mapa cepillo más el flujo punto recomiendan
Actualmente se sabe que ejecuta aplicaciones de Android en Win10 Mobile
Para Win10 (Mobile), Microsoft ha mostrado un gran interés por los desarrolladores de Apple y iOS.
Grupo de discusión puede pasar archivos QQ para Mac versión 3.1.2 versión oficial