中关村在线

软件

C语言库封装指南

库是一组由源文件编译生成的目标文件的集合,例如 s1.c 编译为 s1.o,s2.c 编译为 s2.o,这些目标文件可合并形成库。在 C 语言中,每个目标文件可包含多个数据结构和函数,但不能包含 main 函数,因此库本身不可独立运行,需与其他代码链接后使用。

1、 创建两个源文件 s1.c 和 s2.c,并为它们分别编写对应的头文件 s1.h 与 s2.h。

2、 将s1.c和s2.c编译并打包成静态库libs12.a。

3、 运行gcc -c s1.c s2.c命令,生成对应的目标文件s1.o和s2.o。

4、 执行命令ar cr libs12.a s1.o s2.o将目标文件打包,生成名为libs12.a的静态库文件。

5、 编写测试文件main.c,编译并链接静态库libs12.a进行功能验证。

6、 运行命令gcc -c main.c将源文件编译生成目标文件main.o。

7、 运行命令gcc -o s12.exe main.o libs12.a,将目标文件与静态库链接,生成名为s12.exe的可执行程序。

8、 运行生成的s12.exe可确认已成功连接静态文件。

9、 利用先前生成的源文件s1.c、s2.c、头文件s1.h、s2.h及测试主文件main.c进行后续操作。

10、 利用前一步通过gcc -c s1.c s2.c生成的s1.o和s2.o目标文件,运行命令gcc -fPIC -shared -o libs12.so s1.o s2.o,即可生成名为libs12.so的动态链接库文件。

11、 相同源文件下,动态库体积远大于静态库。

12、 利用上一步通过gcc -c main.c生成的目标文件main.o,运行命令gcc -o s12_so.exe main.o libs12.so,将目标文件与动态链接库结合,最终生成可执行程序s12_so.exe,完成程序的链接与构建过程。

13、 对比发现,在源文件相同的情况下,动态链接生成的可执行文件体积较小(因代码简单差异有限),而静态链接生成的可执行文件较大,动态库文件则相对较大。

14、 IDE中选择合适项目模板,按图示操作即可生成静态库。

15、 IDE生成静态库的操作与手动方式本质相同,只是实现了模板化和可视化,简化了流程。

16、 所示,选择动态库项目模板即可生成动态库。

17、 IDE生成动态库的过程与手动操作在本质上并无不同,具体所示。

展开全文
人赞过该文
内容纠错

相关电商优惠

评论

更多评论
还没有人评论~ 快来抢沙发吧~

读过此文的还读过

点击加载更多

内容相关产品

说点什么吧~ 0

发评论,赚金豆

收藏 0 分享
首页查报价问答论坛下载手机笔记本游戏硬件数码影音家用电器办公打印 更多

更多频道

频道导航
辅助工具