Ubuntu环境下gcc生成静态库,动态库实例

一、gcc生成静态库和动态库实例展示

静态库:
动态库:

1、编写程序

(1)创建目录

mkdir work2

在这里插入图片描述

(2)编写代码

编写page1.c

vi page1.c

在这里插入图片描述

编写page2.c

vi page2.c

在这里插入图片描述

编写page.h

vi page.h

在这里插入图片描述
编写main.c

vi main.c

在这里插入图片描述
退出编辑器使用esc后输入:wq回车即可。

扫描二维码关注公众号,回复: 14855507 查看本文章

2、静态库和动态库

(1)静态库

gcc编译后得到.o文件

gcc -c page1.c page2.c

静态库:
静态库文件名的命名用lib为前缀,后跟库名,扩展名为.a。
创建静态库用命令:ar

ar -crv libpage.a page1.o page2.o
gcc -o main main.c libpage.a

创建静态库完成后
可以输入命令:ls
检验静态库是否创建成功
运行程序

./main

在这里插入图片描述

(2)动态库

动态库文件名命名规范和静态库文件名命名规范类似
在动态库名前加前缀lib,但其文件扩展名为.so
gcc -shared -fPIC -o libpage.so
得到动态库文件libpage.so
检查是否创建成功,则可输入命令:ls

gcc -shared -fPIC -o libpage.so page1.o page2.o
sudo cp libpage.so /usr/lib

sudo cp libpage.so /usr/lib
用于移动动态库的目的地
输入命令:gcc -o main main.c libpage.a

gcc -o main main.c libpage.a

./main

在这里插入图片描述

3、静态库与动态库的比较

输入

ls -l libpage.a

在这里插入图片描述
在输入

ls -l lipage.so

在这里插入图片描述
通过对比两个结果可知,静态库生成的文件相较于动态库生成的文件更小
生成的可执行文件也有小差别。

二、总结

gcc中生成静态库和动态库对我来说是一个全新的内容,在学习过程中可能会有一点对知识点的模糊,但是经过多次的实际操作过后,让我对静态库和动态库有了更深的理解。通过多次的实验就能掌握这两者的使用方法,本次实验参考了如下作者的博客。

三、参考文献

https://blog.csdn.net/qq_43279579/article/details/109026927

猜你喜欢

转载自blog.csdn.net/m0_58406663/article/details/127006802
今日推荐