linux下静态链接库和动态链接库的区别有哪些
区别:1、动态库的后缀为“.so”,静态库的后缀为“.a”。如果动态函数库发生变化,程序不需要重新编译,但如果静态函数库变化了,则必须重新编译程序。3、相对于静态库,动态库在编译的时候并没有被编译进目标代码中,用户的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。
一、库的基础概念:
在windows平台和linux平台下都大量存在着库。库本质上是可执行代码的二进制形式,能够被操作系统加载到内存中并执行。由于Windows和Linux的基本差异,所以这两个平台的库二进制文件不相容。可以简单地理解为将这些常用函数的目标文件打包,并提供相应的函数接口,以方便程序员使用。在使用函数时,只需要包对应的头文件即可。动态库和静态库的使用方式不同,它们在不同平台下的后缀也有所不同。
WINDOWS下:.dll 后缀为动态库,.lib 后缀为静态库;
LINUX下:.so后缀为动态库,.a后缀为静态库。
二、静态库与静态链接
静态库:
简单地说,静态库就是由多个目标文件打包压缩而成的一个文件集合。比如在我们日常编程中,如果需要使用printf函数,就需要包stdio.h的库文件,使用strlen时,又需要包string.h的库文件,可是如果直接把对应函数源码编译后形成的.o文件直接提供给我们,将会对我们的管理和使用上造成极大不便,于是可以使用“ar”压缩程序将这些目标文件压缩在一起,形成libx.a静态库文件。
注:静态库命名格式:lib + "库名称”+ .a(后缀) 例:libadd.a就是一个叫add的静态库
静态链接:
静态库的代码在编译链接时被链接到可执行文件中,程序运行时不再依赖静态库。只需将库文件和程序编译生成的文件链接,便可生成可执行文件。
通过一个例子来了解下如何将我们自己写的头文件和代码同时进行编译链接,最终生成可执行文件:
/main.c/ #include <stdio.h> #include "add.h" int main() { int ret = add(3, 4); printf("3 + 4 = %d ",ret); return 0; } /add.c/ #include "add.h" int add( int x, int y) { return x + y; } /add.h/ #pragma once #include <stdio.h> int add( int x, int y); /Makefile/ main : main.c libadd.a gcc main.c -L . -ladd -o main //-L为指定路径 .为当前目录下 -l+库名字,编译器可在指定目录下自己寻找名为add的库文件 libadd.a : gcc -c add.c -o add.o //ar -rc将多个编译后的文件打包为一个静态库文件 ar -rc libadd.a add.o .PHONY:clean clean: rm main libadd.a</stdio.h></stdio.h>
- 漳州有哪些公司专业做网站SEO···
- 免费微信建站系统:零代码自助搭···
- 专业SEO排名第一,如何通过精···
- 如何利用关键词搜索提升网站人气···
- 山东SEO公司价格如何?月费多···
- 小红书开户流程是怎样的?
- 关键拓展:打破瓶颈,打开无限可···
- ChatGPT在中国受限,AI···
- 智慧服务,一键直达
- 免费SEO工具:如何通过智能工···
- ChatGPT怎么有梯子?科学···
- linux有没有游戏
- SQL注入攻击的原理是什么?网···
- 广州建网站公司,助力企业互联网···
- 如何利用关键词优化系统提升网站···
- “轻量级移动应用构建引擎”
- 云速建站,一键启航
- SEO自己,掌控网站命运的钥匙
- 北京域名注册有哪些必备条件和流···
- B站的发展历程:从二次元社区到···
- 智能建站系统源码如何优化网站生···
- 如何使用vue完成微信公众号网···
- 创新引领,再获殊荣!AGON斩···
- 百度收录:让你的网站在搜索引擎···
- wp博客怎么利用免费插件实现自···
- 使用WordPress建站时最···
- 如何获取js中的值
- 论微信小程序的功能价值
- 独领风骚,一触即达,让你的产品···
- linux oracle数据乱···
- Laravel 事务中 使用 ···
- 泰兴网站设计,打造个性化、专业···
- SEO最强:这些技巧,轻松提升···
- AI文件全称解析AI文件背后的···
- 馆陶SEO,高效优化专家
- 闲鱼拍卖商品怎么操作?
- 如何查看网站是否被收录
- 使用ShopEx建站时,怎样优···
- Workerman开发技巧大揭···
- 微信分销商城发展应该注意那些问···
- 为什么全网营销才是互联网的重点···
- 神速登录,一触即达
- 微博运营,涨粉神器!
- 高级工程师报考,学历+经验+技···
- Intel TXT是什么?
- 自动抓取新闻软件:让信息获取更···
- 如何在闲鱼上轻松开设店铺?
- 建站平台提供的SEO优化功能对···
- 百度网站快速排名-如何通过科学···
- 商务网站SEO实战训练营