Linux---动静态库的制作和使用

一、初识库

1、什么是库?

答:库是写好的,现有的,成熟的,可以复用的代码,在现实中,每一个程序都要依赖很多基础的底层库,不可能每一个人的代码都要从零开始,因此库的存在意义非同寻常。

库的本质是.o文件的集合,是一个可执行代码的二进制文件,可以被操作系统载入内存执行。

库一般有两种,一种是动态库,另一种是静态库。

静态链接 静态链接库

动态链接 动态链接库

库文件是.o文件的集合,想办法打包成一个文件,.a或者是.so

最佳实践的意思是C语言项目编译与链接的规范流程,核心是分布编译,最后链接,避免一次性编译带来的问题;编译阶段,每一个.c源文件单独编译为.o目标文件,只做语法检查和汇编,不进行链接。每一个.c文件独立编译,互不影响,便于定位编译错误。

2、制作静态库

我们写一个库,交付成什么样子?

答:交付的库一般是包含静态库(.a/.lib)或者动态库(.so/.dll)文件,搭配对应的头文件(.h),同时附上下文档和示例代码,方便用户调用和集成。

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中,程序运行的时候将不再
需要静态库。

问题:库制作好后,别人怎么用我的库啊?

答:1、安装库到系统中,就是拷贝到系统路径下。

2、使用-L,-l,-I(大i),随意链接任意的库

3、动态库

动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码

动态库,形成动态库,不用ar,而是继续使用gcc,g++。---动态库是常见的场景。

动态库和静态库在使用上是没有任何区别的。

相关推荐
Zhang~Ling10 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind10 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的阿森10 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森10 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
中微极客10 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
吠品11 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
XMAIPC_Robot11 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
AOwhisky11 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
重生的黑客11 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice
Urbano11 小时前
夹克与商务单西口袋工序自动化技改研究报告
运维·自动化