En primer lugar, crear una carpeta, archivo que he creado la carpeta es el estudio, los siguientes documentos se encuentran en esta carpeta de archivo.
El código siguiente es un genera aleatoriamente número 20 ordenada, por ejemplo, sólo
sort.h
1 #ifndef sort_h 2 #define sort_h 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <time.h> 6 #define N 20 7 8 void burbuja ( int a [], int n) ; 9 void insertsort ( int a [], int n); 10 void SelectSort ( int a [], int n); 11 int principal ( int argc, char ** argv); 12 13 #endif 14 15
bubble.c
1 # include " sort.h " 2 void burbuja ( int a [], int n) { 3 int i, j, t; 4 para (i = 1 ; i <n; i ++ ) { 5 para (j = 0 ; j <Ni; j ++ ) { 6 si (a [j]> a [j + 1 ]) { 7 t = a [j] ; 8 un [j] = a [j + 1 ]; 9 un [j + 1 ] = t; 10 } 11 } 12 } 13 }
insertsort.c
1 # include " sort.h " 2 void insertsort ( int a [], int n) { 3 int i, j, temp; 4 para (i = 1 ; i <n; i ++ ) { 5 temp = a [i]; 6 j = i- 1 ; 7 , mientras que (j> = 0 && un [j]> temp) { 8 un [j + 1 ] = a [j]; 9 j-- ; 10 } 11 un [j + 1 ] = temp; 12 } 13 }
selectsort.c
1 # include " sort.h " 2 void SelectSort ( int a [], int n) { 3 int i, j, k, m; 4 para (i = 0 ; i <n- 1 ; i ++ ) { 5 m = a [i]; 6 k = i; 7 para (j = i + 1 ; j <n; j ++ ) 8 si (a [j] < m) { 9 m = a [j]; k = j; 10 } 11 un [k] = a [i]; 12 a [i] = m; 13 } 14 } 15
testsort.c
. 1 #include " sort.h " 2 int principal ( int argc, char ** el argv) { 3. Int A [N], I; 4. El printf ( " Start Run: \ n- " ); . 5 srand (time ( 0 )) ; . 6 para (i = 0 ; I <N; i ++) a [i] = RAND ()% 100 ; 7. el printf ( " datos iniciales: " ); . 8 para (i = 0 ; i <N; i ++ ) . 9 printf (" % D " , A [I]); 10 la printf ( " \ n- " ); . 11 de la burbuja (A, N); 12 es el printf ( " burbuja ordenar los datos: " ); 13 es para (i = 0 ; I < N; i ++) el printf ( " % D " , a [I]); 14 la printf ( " \ n- " ); 15 insertsort (a, N); 16 la printf ( " inserción directa ordenar los datos: " ); 17. para ( = I 0 ; I <N;i ++) printf ( "% D "A [I]); 18 es el printf ( " \ n- " ); . 19 SelectSort (A, N); 20 es el printf ( " elegir los datos clasificados: " ); 21 es para (i = 0 ; I <N ; I ++) el printf ( " % D " , A [I]); 22 es el printf ( " \ n- " ); 23 es }
Makefile
1 OBJ = testsort.o bubble.o insertsort.o selectsort.o 2 testsort: $ (OBJ) sort.h 3 gcc $ (OBJ) - o testsort 4 testsort.o: testsort.c 5 bubble.o: bubble.c 6 insertsort.o: insertsort.c 7 selectsort.o: selectsort.c 8 9 .PHONY: CLEANA limpio 10 CLEANA: 11 rm testsort $ (OBJ) 12 limpia: 13 rm $ (OBJ)
No se ha alcanzado una biblioteca
Introduzca el comando: make
cc -c -o testsort.o testsort.c cc -o -C bubble.o bubble.c cc -c -o insertsort.o insertsort.c cc -c -o selectsort.o selectsort.c gcc testsort.o bubble.o insertsort.o selectsort.o -a testsort
El tamaño del archivo ejecutable
-rw-rw-rw- 1 huxingui huxingui 265 Mar 21 de 10:02 Makefile -rw-rw-rw- 1 huxingui huxingui 184 Mar 21 de 10:02 bubble.c -RW-rw-rw- 1 huxingui huxingui 1448 Mar 21 10:03 bubble.o -RW-rw-rw- 1 huxingui huxingui 190 Mar 21 10:02 insertsort.c -RW-rw-rw- 1 huxingui huxingui 1424 Mar 21 10:03 insertsort.o -RW-rw-rw- 1 huxingui huxingui 192 Mar 21 10:02 selectsort.c -RW-rw-rw- 1 huxingui huxingui 1456 Mar 21 10:03 selectsort.o -RW-rw-rw- 1 huxingui huxingui 232 Mar 21 10:02 sort.h -rwxrwxrwx 1 huxingui huxingui 12856 Mar 21 de 10:03 testsort -RW-rw-rw- 1 huxingui huxingui 656 Mar 21 10:02 testsort.c -RW-rw-rw- 1 huxingui huxingui 3064 Mar 21 10:02 testsort.o
La ejecución del archivo ejecutable
Empezar a correr: Los datos iniciales: 4.323.339.844.754.992 7.194.757.788.330.999.461 25 Burbuja de datos de clase después de 3: 0 7,232,533,434,449,576,171 7,578,839,294,949,899 datos de ordenación por inserción directa después de 3: 0 7,232,533,434,449,576,171 7,578,839,294,949,899 Sencilla de datos ordenación por selección después de 3: 0 7,232,533,434,449,576,171 7,578,839,294,949,899
En segundo lugar utilizar un archivos de biblioteca estática, generar bibliotecas estáticas. archivos de la biblioteca son generalmente el prefijo lib, seguido por el nombre de la biblioteca, la extensión .a, por ejemplo, estamos aquí para crear una biblioteca libhxg.a nombre de biblioteca, utilice el comando ar, de la siguiente manera:
AR rcs libhxg.a bubble.o insertsort.o selectsort.o
Esto crea una librería dinámica libhxg.a
Ahora podemos poner libhxg.a testsort.c sort.c en la misma carpeta que libSamp
A continuación, utilice el siguiente comando para compilar
gcc -o testsort testsort.c -static -L. -lhxg
Cuando la descripción del comando superior:
(1), gcc -o testsort: Uso del compilador gcc, especifica el nombre del archivo -o, detrás testsort es el nombre de archivo generado definitiva
(2), - estáticas: especifica el uso de bibliotecas estáticas
(3), - L.:-L especifica usando la biblioteca, este último indica que el archivo de biblioteca en el directorio actual.
(4), - lhxg: indicar el nombre del archivo de biblioteca, donde - indica que la opción, l lib es taquigrafía, HXG es el nombre real detrás del archivo de biblioteca, no se necesita el sufijo
El tamaño del archivo ejecutable
-RW-rw-rw- 1 huxingui huxingui 4622 Mar 21 10:08 libhxg.a -RW-rw-rw- 1 huxingui huxingui 232 Mar 21 10:08 sort.h -rwxrwxrwx 1 huxingui huxingui 850056 Mar 21 de 10:09 testsort -RW-rw-rw- 1 huxingui huxingui 656 Mar 21 10:08 testsort.c
La ejecución del archivo ejecutable
Empezar a correr: Los datos iniciales: 90 4,177,703,512,789,061 1,013,146,592,106,480,688 Después que los datos ordenamiento de burbuja: 2,691,010,121,314,354,161 64 6,570,777,880,889,091 Directamente en los datos después de la clasificación: 2,691,010,121,314,354,161 64 6,570,777,880,889,091 Después de seleccionar los datos especie es simple: 2,691,010,121,314,354,161 64 6,570,777,880,889,091
En tercer lugar, el uso de las bibliotecas dinámicas: a archivos de bibliotecas dinámicas. archivos de la biblioteca son generalmente el prefijo lib, seguido por el nombre de la biblioteca, la extensión .so, por ejemplo, estamos aquí para crear un nombre de biblioteca libhxg.so bibliotecas, de la siguiente manera
En primer lugar bubble.o insertsort.o selectsort.o sort.h archivo testsort.c en la misma carpeta que libSo
A continuación, utilice el siguiente comando
gcc -o -shared -fPIC libhxg.so bubble.o insertsort.o selectsort.o
Cuando la descripción del comando superior:
(1), gcc -o libhxg.so: Uso del compilador gcc, especifica -o el nombre del archivo, es la última detrás libhxg.so generada nombre de la biblioteca dinámica
(2), - compartida: la generación de una biblioteca dinámica especificado
(3), - fPIC:. Esta opción le dice a gcc genera código no contienen referencias a funciones y variables de posición de memoria específica, la dirección del enlace en tiempo de ejecución
Esto crea una dinámica de archivos de la biblioteca de un libhxg.so
Utilice el siguiente comando para compilar
gcc testsort.c -L. -lhxg -o testsort
El tamaño del archivo ejecutable
-RW-rw-rw- 1 huxingui huxingui 1448 Mar 21 10:11 bubble.o -RW-rw-rw- 1 huxingui huxingui 1424a Mar 21 10:11 insertsort.o -rwxrwxrwx 1 huxingui huxingui 7584 Mar 21 de 10:13 libhxg.so -RW-rw-rw- 1 huxingui huxingui 1456 Mar 21 10:11 selectsort.o -RW-rw-rw- 1 huxingui huxingui 232 Mar 21 10:12 sort.h -rwxrwxrwx 1 huxingui huxingui 12752 Mar 21 de 10:14 testsort -RW-rw-rw- 1 huxingui huxingui 656 Mar 21 10:12 testsort.c
La ejecución del archivo ejecutable
Empezar a correr: Los datos iniciales: 50 1,269,683,653,953,319 2,424,805,658,488,998 88 Después de la burbuja de datos para ordenar: 3 5,691,219,242,433,506,565 8,083,848,888,959,698 Directamente en los datos después de la clasificación: 3 5,691,219,242,433,506,565 8,083,848,888,959,698 Después de la selección de datos simples ordenar: 3 5,691,219,242,433,506,565 8,083,848,888,959,698
Por comparación de los anteriores datos muestran que el tamaño del archivo ejecutable, archivo de la biblioteca sin el caso 12.856, 850.056 biblioteca es estática, librería dinámica es visible biblioteca estática 12752. archivos ejecutables más grandes. Pero la situación no definida se puede producir al compilar una biblioteca dinámica, basada en este caso no tengo que averiguar. gcc testsort.c -L. -lhxg -o testsort Esta directiva hace referencia a algo de la información en línea.