栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

用gcc生成静态库.a和动态库.so

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用gcc生成静态库.a和动态库.so

目录
  • 一、实例准备
    • 1.创建目录
    • 2.编辑实例程序
  • 二、静态库的生成和使用
    • 1.生成.o文件
    • 2.生成.a静态库文件
    • 3.创建可执行文件,编译运行
    • 4.查看文件大小
  • 三、动态库的生成和使用
    • 1.生成.o文件
    • 2.生成.so动态库文件
    • 3.创建可执行文件,编译运行
    • 4.查看文件大小

在Linux中,有两种函数库,以.a后缀命名的是静态函数库,以.so后缀命名的是动态函数库。

  • 静态函数库:在编译链接时候,程序所需要的函数会从静态函数库中拷贝到执行文件中。当程序运行的时候,就不需要链接外部的函数库了。
  • 动态函数库:在编译链接时,程序所需要的函数不会从动态函数库中拷贝出来,而是在程序运行的时候,才会将所需要的函数加载进来。
一、实例准备 1.创建目录

创建一个目录,保存实例所需要的文件。

  • mkdir–Make Directory:用于创建一个新目录。
  • cd–Change Directory:切换文件路径,将给定的文件夹(目录)设置成当前工作目录。

2.编辑实例程序

用vi、vim、nano或gedit等文本编辑器编辑生成所需要的3个文件 sub1.c、sub2.c、main.c 。

按i键进行编辑,编辑完成按ESC键退出输入模式,最后一排,输入 :wq,按回车键即可保存退出。
sub1.c:

sub2.c:

main.c:

二、静态库的生成和使用 1.生成.o文件
  • gcc:https://www.cnblogs.com/yangziwen0709/p/5014420.html
  • ls–List:列举出当前工作目录的内容(文件或文件夹)。

2.生成.a静态库文件

静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。

3.创建可执行文件,编译运行

用gcc将main函数的目标文件与静态库文件进行链接,生成可执行程序。输入命令./main编译运行程序main.c。

4.查看文件大小

size:用于查看目标文件、库或可执行文件中各段及其总和的大小。

三、动态库的生成和使用 1.生成.o文件

2.生成.so动态库文件

3.创建可执行文件,编译运行


发现错误,运行ldd main,查看链接情况。找不到.so文件,这是由于 linux 自身系统设定的相应的设置的原因,即其只在/lib或/usr/lib下搜索对应的.so文件。

将对应.so文件拷贝到对应路径。再次编译运行,正确。

  • sudo:是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。
  • cp:将当前目录下的所有文件复制到新目录下.(用户使用该指令复制目录时,必须使用参数-r或者-R。)

4.查看文件大小

比较发现静态库要比动态库要小很多,生成的可执行文件大小也存在较小的差别。

参考文献
https://blog.csdn.net/weixin_51087836/article/details/109086411
https://www.cnblogs.com/Recca/p/11385827.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号