Realizados en el marco de la biblioteca Linux y comparar

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.

Supongo que te gusta

Origin www.cnblogs.com/xinguihu/p/12537534.html
Recomendado
Clasificación