如何封装C语言静态库和动态库

2025-10-16 19:15:24

1、准备两个源文件s1.c、s2.c,以及相应的头文件s1.h、s2.h。

如何封装C语言静态库和动态库

2、从s1.c和s2.c生成静态库libs12.a:

(1)执行指令“gcc -c s1.c s2.c”生成目标文件:s1.o、s2.o

(2)执行指令“ar cr libs12.a s1.o s2.o”生成静态库:libs12.a

如何封装C语言静态库和动态库

3、准备测试文件main.c并编译连接静态库libs12.a

(1)执行指令“gcc -c main.c”生成目标文件:main.o

(2)执行指令“gcc -o s12.exe main.o libs12.a”生成可执行文件s12.exe

(3)执行生成的s12.exe可验证成功连接静态文件

如何封装C语言静态库和动态库

1、使用上一步的源文件s1.c、s2.c、s1.h、s2.h以及测试文件main.c

如何封装C语言静态库和动态库

2、使用上一步用“gcc -c s1.c s2.c”生成的目标文件s1.o、s2.o,执行指令“gcc -fPIC -shared -o libs12.so”生成动态库:lib12.so

对比发现,源文件相同,动态库文件比静态库文件要大得多。

如何封装C语言静态库和动态库

3、使用上一步用“gcc -c main.c”生成测试用目标文件main.o,执行指令“gcc -o s12_so.exe main.o libs12.so”生成可执行文件s12_so.exe

对比可知,源文件相同,动态连接生成的可执行文件要比静态连接的要小(因测试代码简单,所以小得有限),而动态库要大。

如何封装C语言静态库和动态库

1、IDE生成库可选择相应的项目模版,如下图所示,生成静态库。

可以发现,IDE生成静态库操作与前述手工操作并没有本质上的区别,只不过是模版化、可视化了。

如何封装C语言静态库和动态库

如何封装C语言静态库和动态库

2、Code::Blocks生成动态库如下图所示,选择动态库项目模版。

同样,IDE生成动态库操作与手工操作没有本质区别,如下图所示。

如何封装C语言静态库和动态库

如何封装C语言静态库和动态库

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢