linux下的静态库和动态库以及gcc常见编译选项

本文介绍了Linux系统中静态库与动态库的概念、区别及创建方法,强调了静态库在编译后不再依赖外部库,而动态库在运行时才加载。还讲解了gcc编译器的常用选项,包括如何创建静态库和动态库,并给出了编译示例。
摘要由CSDN通过智能技术生成

一、linux下的静态库和动态库

linux和windows下都有大量的库,库在本质上就是可执行的二进制代码,可以被操作系统载入内存执行。我们通常将一些通用函数写成函数库,所以库是别人写好的,现有的,成熟的,可以复用的代码,你可以使用但要必须得遵守许可协议。

1.静态库
静态库的文件命名方式是“libxxx.a",库名前加"lib",windows和linux下都是用后缀”.a",“xxx"为静态库名,windows下的静态库名也是“libxxx.a”。
链接时间:静态库的代码是在程序编译过程中载入代码的。
链接方式:静态库的链接方式是将整个函数库的所有数据都整合进目标代码中。静态链接的优点是在编译后的程序不再需要外部函数库的支持。但是,如果静态库发生更新改变,程序必须重新编译。

2.动态库
动态库的文件命名方式和静态库相似是"libxxx.so",库名前加"lib",后缀为”.so"。而windows下动态库命名为"libxxx.dll"。dll即"dynamic link library"。
链接时间:动态库在编译的时候并没有被编译进目标代码,而是当你的程序执行到相关函数时才调用该函数库里的相应函数。这样做缺点是因为函数库并没有整合进程序,所以程序的运行环境必须提供相应的库。优点是动态库的改变并不影响你的程序,所以动态函数库升级比较方便。

当同一个程序分别使用静态库,动态库两种方式生成两个可执行文件时,静态链接所生成的文件所占用的内存要远远大于动态链接所生成的文件。这是因为静态链接是在编译时将所有的函数都编译进了程序,而动态链接是

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值