Linuxのライブラリの下で達成して比較

まず、フォルダを作成し、私は、フォルダを作成したファイルが調査され、次のドキュメントは、このファイルのフォルダにあります。

次のコードは、ランダムに生成された番号20は、例えば、ソートされ

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  空隙バブル(INT []、int型N) ;
9  ボイド insertsort(int型 []、int型n)を。
10  ボイド selectsort(int型 []、int型n)を。
11  INTメイン(int型 ARGC、チャー ** ARGV)。
12  
13 #endifの
14  
15                           

bubble.c

1つの#include " sort.h " 
2  空隙バブル(int型 []、INT n)を、{
 3          INT I、J、T。
4          のためには、式(I = 1、I <N; I ++ ){
 5                  ため(J = 0 ; J <NI; J ++ ){
 6                          場合([J]> [J + 1 ]){
 7                                  T = [J] ;
8                                  [j]は= [J + 1 ]。
9                                  [J + 1 ] = T。
10                         }
 11                  }
 12          }
 13 }

insertsort.c

1つの#include " sort.h " 
2  空隙 insertsort(int型 []、INT n)を、{
 3          INT I、J、TEMP;
4          のための(iは= 1 ; I <N; I ++ ){
 5                  TEMP = [I]。
6                  J = I- 1 7                  一方(j> = 0 && A [j]> TEMP){
 8                          [J + 1 ] = [J]。
9                          j-- 10                  }
 11                 [J + 1 ] = TEMP。
12          }
 13 }

selectsort.c

1つの#include " sort.h " 
2  空隙 selectsort(int型 []、INT n)を、{
 3          INT I、J、K、M。
4          のための式(I = 0 ; iが<N- 1 ; I ++ ){
 5                  mは= [I];
6                  、K = I。
7                  ため(J = I + 1 ; J <N J ++ 8                          であれば([J] < {M)
 9                                  、M = A [j]は、K = J。
10                          }
 11                 [k]は= [I]を、
12                  A [I] = M。
13          }
 14  }
 15                  

testsort.c

1つの#include " sort.h " 
2  INTメイン(int型 ARGC、チャー ** ARGV){
 3          int型A [N]、I;
 4。          のprintf(" 開始実行:\ N- " );
 5          srand関数(時間(0 )) ;
 6          ため(私は= 0 ; I <N; I ++)A [I] = RAND()%100 ;
 7。          のprintf(" 初期データ:" );
 8          ため(私は= 0 ; I <N; I ++ 。9                  printf(" %のD " 、A [I]);
 10          のprintf(" \ N- " );
 11。         バブル(A、N)
 12である          (printfの" バブルソートデータ:" );
 13である         ため(私は= 0 ; I < N; I ++)のprintf(" %のD " 、A [I]);
 14          のprintf(" \ N- " );
 15          insertsort(A、N)
 16          のprintf(" 直接挿入ソートデータ:" );
 17。         ための( = I 0、I <N。I ++)のprintf( "%Dが" ;、A [I])
 18がある          のprintf(" \ N- " );
 19。         SelectSort(A、N)
 20である          (printfの" ソートされたデータを選択します" );
 21である         ため(私は= 0を I <N。 ; I ++)のprintf(" %のD " 、A [I]);
 22である          のprintf(" \ N- " );
 23れます }

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クリーン
 10  cleanA:
 11          RM testsort $(OBJ)
 12  クリーン:
 13          RM $(OBJ)

ライブラリを達成していません

コマンドを入力します。メイク

CC -c -o testsort.o testsort.c 
のcc -c -o bubble.o bubble.c 
のcc -c -o insertsort.o insertsort.c 
のcc -c -o selectsort.o selectsort.c 
gccのtestsort.oバブル。 O insertsort.o selectsort.o -o testsort

  実行可能ファイルのサイズ

RW-rw- 1 - RW huxingui huxingui-マール265 10時02分21のMakefileである
。-rw-rw- RW-184 1 huxingui huxingui-マル10:02 bubble.c 21は
-rw-RW - RW 1 huxingui huxingui 21 10 1448年3月です:03 bubble.o 
。-rw-rw- RW-190 1 huxingui huxingui-マル10:02 insertsort.c 21である
。-rw-RW - RW 1 huxingui huxingui-1424年3月21 10:03であるinsertsort.o 
-rw-RW-rw- 21 huxingui huxingui 192マールである10時02 selectsort.c。
-rw-RW - RW 1 huxingui huxingui-1456年3月10時03 21はselectsort.oれる
。-rw-rw- RW-232-マール1 huxingui huxingui 21 10時02分であるsort.h 
12856-3月1日huxingui huxingui -rwxrwxrwx 21でtestsort 10:03 
-rw-rw- RW-656。1 huxingui huxingui-マル10:02 testsort.c 21は
-rw-rw- 1 RW-21であるhuxingui huxingui-マール3064 10:02 testsort.o

  実行可能ファイルの実装

スタートファイル名を指定して実行:
初期データ:4,323,339,844,754,992 7,194,757,788,330,999,461 25 
バブルソートデータ3の後:0 7,232,533,434,449,576,171 75 78 83 92 94 949899 
直後挿入ソートデータ3:0 7,232,533,434,449,576,171 7,578,839,294,949,899 
単にソートデータ3の後:0 7,232,533,434,449,576,171 75 78 83 9294949899

 第二に静的ライブラリを生成し、静的ライブラリファイルを使用します。ライブラリファイルは、一般的に次のように、コマンドARを使用し、LIBで始まるライブラリ名が続き、延長.A、例えば、私たちは図書館libhxg.aライブラリ名を作成するためにここにいるされています。

AR RCS libhxg.a bubble.o insertsort.o selectsort.o

  これは、動的ライブラリlibhxg.aを作成します

今、私たちはlibSampと同じフォルダにsort.c testsort.c libhxg.a置くことができます

そして、コンパイルするには、次のコマンドを使用します

gccの-o testsort testsort.c -static -L。-lhxg

 どこtopコマンドの説明:

  (1)、gccの-o testsort:testsort背後使用GCCコンパイラ、-o指定したファイル名は、最終生成されたファイル名であります

  (2)、 - 静的:指定静的ライブラリの使用

  (3)は、 - L.:-Lライブラリを使用して指定、後者は、現在のディレクトリに、そのライブラリファイルを示しています。

  (4)、 - lhxg:、ライブラリファイルの名前を示している - そのオプションを示し、L libには速記で、hxgはサフィックスが必要とされていない、ライブラリファイルの後ろの本当の名前です

   

実行可能ファイルのサイズ

-rw-RW-rw- 1 huxingui huxingui 3月21日4622 10:08 libhxg.a 
-rw-RW-rw- 1 huxingui huxingui 232 3月21日10時08 sort.h 
-rwxrwxrwx huxingui huxingui 1 850 056 3月21日10時09分testsort 
-rw-RW-rw- 1 huxingui huxingui 656 3月21日10時08分testsort.c

  実行可能ファイルの実装

スタートファイル名を指定して実行:
初期データ:90 4,177,703,512,789,061 1,013,146,592,106,480,688 
バブルソートデータの後:2,691,010,121,314,354,161 64 65 70 77 78 80 889091 
2,691,010,121,314,354,161 64 6,570,777,880,889,091:直接ソートされたデータに
した後、簡単な選択ソートデータ:2,691,010,121,314,354,161 64 65 70 77 7880889091

  第三に、動的ライブラリの使用:動的なライブラリファイル。ライブラリファイルは、一般的にライブラリ名が続き、LIBという接頭辞が付き、拡張子は.soは、例えば、我々として以下の、ライブラリlibhxg.soライブラリ名を作成するためにここにいます

 まずbubble.o insertsort.o selectsort.o sort.h testsort.c libSoと同じフォルダにファイル

  そして、次のコマンドを使用します。

gccの-shared -fPIC -o libhxg.so bubble.o insertsort.o selectsort.o

 どこtopコマンドの説明:

  (1)、gccの-o libhxg.so:使用GCCコンパイラ、-o指定したファイル名は、生成された動的ライブラリの名前libhxg.so最終の背後にあります

  (2)、 - 共有:指定された動的ライブラリを生成します

  (3)、 - FPIC:このオプションは、アドレスリンクランタイム、gccがコードは関数や変数の特定のメモリ位置への参照が含まれていない生成伝えます。

 

これはlibhxg.soの動的ライブラリファイルを作成します

   コンパイルするには、次のコマンドを使用します

 gccのtestsort.c -L。-lhxg -o testsort

  実行可能ファイルのサイズ

-rw-RW-rw- 1 huxingui huxingui 1448年3月21日10時11 bubble.o 
-rw-RW-rw- 1 huxingui huxingui 1424年3月21日10時11分insertsort.o 
1 -rwxrwxrwx huxingui huxingui 3月21日午前10時13分7584 libhxg .soの
-rw-RW-rw- 1 huxingui huxingui 1456年3月21日10時11 selectsort.o 
-rw-RW-rw- 1 huxingui huxingui 232 3月21日10時12 sort.h 
-rwxrwxrwx huxingui huxingui 1 12752 3月21日10: 14 testsort 
-rw-RW-rw- 1 huxingui huxingui 656 3月21日午前10時12 testsort.c

  実行可能ファイルの実装

スタートファイル名を指定して実行:
初期データ:50個の1,269,683,653,953,319 2,424,805,658,488,998 88 
バブルソートデータの後:3 5,691,219,242,433,506,565 80 83 84 88 88 959698個の
直接挿入ソートデータの後:3 5,691,219,242,433,506,565 8,083,848,888,959,698 
単純選択ソートデータの後:3 5,691,219,242,433,506,565 80 83 84 8888959698

  ケース12856せずに実行可能ファイル、ライブラリファイルのサイズは、850056ライブラリが静的であることが上記のデータが示すの比較により、動的ライブラリは、可視12752.静的ライブラリ大きな実行可能ファイルです。私が把握する必要がありません。この場合に基づいて、動的なライブラリをコンパイルするときしかし、未定義の状況が発生する可能性があります。gccのtestsort.c -L。-lhxg -o testsortこのディレクティブは、オンライン情報の一部への参照です。

おすすめ

転載: www.cnblogs.com/xinguihu/p/12537534.html