Linux下静态库的创建及链接

库是什么

在OS上运行的程序基本上都需要使用库,使用库可以提高开发效率。 库是一个二进制文件,包含的代码可以被程序调用。比如 标准C库、数学库、线程库等等。库有源码,可下载后编译;也可以直接安装二进制包。库的存放路径一般是/lib /usr/lib

静态库的特点

编译(链接)时,把静态库中的相关代码复制到可执行文件中。

优点:

- 程序中已包含代码,运行时不再需要静态库。
- 程序运行时无需加载库,运行速度更快。

缺点

-占用更多的磁盘空间
-静态库升级后,程序需要重新编译链接。

静态库的创建(1)

以hello world 为例。首先编写库源码hello.c,编译生成hello.o文件

在这里插入图片描述

编译后

在这里插入图片描述

静态库的创建(2)

创建静态库 hello

在这里插入图片描述

参数解释:

ar crs 为固定操作符,不做解释。
libhello.a 为静态库文件名称,lib xxxx.a 文件名以lib开始,.a结束,为固定格式。xxxx一般以函数的功能命名,如math\sum等。 hello.o为静态库中所包含的目标文件,本例中只有一个目标文件,但可以有多个。

可以查看静态库中符号信息

book@100ask:~/static$ nm libhello.a在这里插入图片描述

静态库的创建(3)

编写应用程序test.c ,并链接静态库。

在这里插入图片描述

链接静态库

在这里插入图片描述

参数解释:

-L. :指定库的搜索路径,’ . '表示当前目录。编译器默认是链接C库。
-lhello :指定要链接库名称,注意不是静态库名称,没有lib.

运行结果

在这里插入图片描述

因为程序中已包含代码,所以运行时删除静态库也没事。

在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值