1.先創建一個目錄
mkdir test
cd test

2.然后使用vim編輯器編輯生成sub1.c,sub2.c,main1.c
sub1.c代碼
extern float x2x(int a,int b)
{
return (float)a/b; //相除
}
sub2.c代碼
extern float x2y(int a,int b)
{
return (float)a*b;
}
main1.c代碼
#include "sub1.c"
#include "sub2.c"
#include <stdio.h>
int main() {
int x,y;
scanf("%d%d",&x,&y);
printf("%5f\n",x2x(x,y));
printf("%5f\n",x2y(x,y));
return 0; }


3.將 sub1.c、sub2.c 、main1.c編譯成 .o檔案
gcc -c sub1.c sub2.c main1.c

4.將x2x、x2y目標檔案用 ar工具生成1個 .a 靜態庫檔案
ar crv libafile.a sub1.o sub2.o


5.用 gcc將 main函式的目標檔案與此靜態庫檔案進行鏈接
gcc main1.c libafile.a -o main1


使用情況
6.記錄檔案的大小
size main1

7.將x2x、x2y目標檔案用 ar工具生成1個 .so 動態庫檔案
生成目標檔案(xxx.o)
gcc -c -fpic sub1.c sub2.c
o檔案創建動態庫
gcc -shared -fPIC -o libsub.so sub1.o sub2.o

8.使用動態庫
gcc main1.c libsub.so -o main2
sudo mv libsub.so /usr/lib

9.記錄大小
a904352517@ubuntu:~/test$ size main1
text data bss dec hex filename
1986 616 8 2610 a32 main1
a904352517@ubuntu:~/test$ size main2
text data bss dec hex filename
2317 651 8 2872 b65 main2
大小對比
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/179292.html
標籤:其他
