一丶首先编辑测试文件。
main.c
1 #include<stdio.h>
2 #include"head.h" 3 4 5int main(int argc, char *argv[])
6{
7int a[10]={
8 -26,2,3,77,12,88,0,-8,99,100 9 };
10int i=0;
11 sort(a,10);
12for(i=0;i<10;i++)
13 {
14 printf("%d n",a[i]);
15 }
16return0;
17 }
sort.c
1
void sort(int *a,int len)
2{
3int i=0;
4int j;
5int t;
6for(i=0;i<len;i++)
7 {
8for(j=0;j<len-i-1;j++)
9 {
10if(a[j]>a[j+1])
11 {
12 t=a[j];
13 a[j]=a[j+1];
14 a[j+1]=t;
15 }
16 }
17 }
18 }
head.h
1
#ifndef head_h
2
#define head_h
345void sort(int *a,int len);
67#endif8
二丶我们在这里做一个附加的Makefile文件。(用Makefile编译)
Makefile
OBJ=main.o sort.o main:$(OBJ) head.h gcc -o main $(OBJ) main.o:main.c sort.o:sort.c .PHONY:cleaA clean cleanA: rm main $(OBJ) clean: rm $(OBJ)
接下来执行指令:make
会有如下结果生成.o文件
cc -c -o main.o main.c cc -c -o sort.o sort.c gcc -o main main.o sort.o
执行结果为
zhanghongle ~ test ./main -26 -802312778899100
执行命令:ls -l
可查看各个文件的大小
-rw-r--r-- 1 root root 147 Mar 2202:48 Makefile -rw-r--r-- 1 root root 67 Mar 2202:32 head.h drwxr-xr-x 1 root root 512 Mar 2202:59 libzhl -rwxrwxrwx 1 zhanghongle zhanghongle 8416 Mar 2205:17 main -rw-r--r-- 1 root root 215 Mar 2202:36 main.c -rw-rw-rw- 1 zhanghongle zhanghongle 1824 Mar 2205:17 main.o -rw-r--r-- 1 root root 196 Mar 2202:32 sort.c -rw-rw-rw- 1 zhanghongle zhanghongle 1448 Mar 2205:17 sort.o
三丶静态库的实现
首先生成静态库
执行指令:ar rcs libzhl.a sort.o
使用静态库编译
执行指令:gcc -o main main.c -static -L. -lzhl
执行命令:./main
结果为
zhanghongle ~ test cd libzhl zhanghongle ~ test libzhl ls head.h libzhl.a main main.c zhanghongle ~ test libzhl ./main -26 -802312778899100
同时重复执行:ls -l
文件大小一对比能明显反应静态库的特点
-rw-r--r-- 1 root root 67 Mar 2202:58 head.h -rw-r--r-- 1 root root 3482 Mar 2202:58 libzhl.a -rwxr-xr-x 1 root root 844792 Mar 2202:59 main -rw-r--r-- 1 root root 215 Mar 2202:58 main.c
四丶动态库的实现
首先生成动态库
执行指令:gcc -shared -fPIC -o libzhl.so sort.o
使用静态库编译
执行指令:gcc -o main main.c -L. -lzhl(编译方式类似于静态库)
同样观察文件大小也能看出动态库的特点
-rw-r--r-- 1 root root 147 Mar 2202:48 Makefile -rw-r--r-- 1 root root 67 Mar 2202:32 head.h drwxr-xr-x 1 root root 512 Mar 2202:59 libzhl -rwxrwxrwx 1 zhanghongle zhanghongle 7432 Mar 2211:27 libzhl.so -rwxrwxrwx 1 zhanghongle zhanghongle 8416 Mar 2211:27 main -rw-r--r-- 1 root root 215 Mar 2202:36 main.c -rw-rw-rw- 1 zhanghongle zhanghongle 1824 Mar 2211:27 main.o -rw-r--r-- 1 root root 196 Mar 2202:32 sort.c -rw-rw-rw- 1 zhanghongle zhanghongle 1448 Mar 2211:27 sort.o
原文:https://www.cnblogs.com/hongle31/p/12544687.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!