首页 > 运维 > linux运维 > 正文

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密

蓮花仙者
发布: 2025-07-23 10:54:02
原创
769人浏览过

前言:在linux编程的广阔领域中,io(输入/输出)操作是系统与外界交互的基础,具有至关重要的作用。无论是文件读写、网络通信还是设备驱动,都离不开io操作的支持。而在这过程中,动静态库作为代码复用的重要手段,发挥着关键作用。它们不仅简化了开发流程,提高了开发效率,还通过优化资源使用和缩短编译时间等方式,增强了linux程序的性能和可维护性。

让我们一起踏上这段充满挑战与收获的学习之旅,探索Linux基础IO中动静态库的无限可能!


?1. 库的作用:代码复用与模块化编程:

使用库能极大地简化代码,并带来诸多优势,这些优势让开发者能够更高效地开发软件,提升软件的质量和可维护性。

静态库和动态库:接下来,我将通过模拟一个支持加减乘除的库,来帮助大家理解静态库和动态库的使用。

头文件.h:

// 为了简化代码,将它们放在一起展示
// Add.h
#pragma once
#include <stdio.h>
extern int Add(int x, int y);

// Sub.h
#pragma once
#include <stdio.h>
extern int Sub(int x, int y);

// Mul.h
#pragma once
#include <stdio.h>
extern int Mul(int x, int y);

// Div.h
#pragma once
#include <stdio.h>
extern int Div(int x, int y);
登录后复制

然后我们编写一个.c文件,将这些声明定义出来,这里就不展示了。


?2. 静态库:

基于上面的代码,如果我们想要编译并执行一个文件,使用起来会有些复杂。我们需要先将它们编译成二进制.o文件,然后进行链接。因此,我们可以将它们打包成一个文件,以便快速实现我们想要的程序。


?生成静态库Makefile:

static-lib=libmymath.a
$(static-lib):Add.o Sub.o Mul.o Div.o
    ar -rc $@ $^
%.o:%.c
    gcc -c $<
output:
    mkdir mymath_lib
    cp $(static-lib) mymath_lib
    rm *.o
登录后复制

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密

这样我们就简单生成了一个静态库。那么我们该如何使用这个静态库呢?其实只要在编译时,链接库就可以了。


⭐使用静态库:

在编译时,需要指定静态库文件的位置,以便编译器能够找到并链接它。链接器(Linker)会将静态库中的代码和数据复制到最终的可执行文件中。

注意:-l加上链接的库名称时,需要去掉lib和文件后缀(例如libmymath.a -> -lmymath)。

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密

最后我们可以直接运行这个可执行程序。

注意事项:

静态库通常用于提供基础功能或算法,这些功能或算法在多个程序中都会用到,且更新不频繁。随着模块化编程和动态链接技术的发展,静态库的使用逐渐减少,特别是在需要减小程序体积和共享代码库更新的场景下。在某些情况下,如嵌入式系统或需要高度安全性的环境中,静态库仍然是首选方案。


?3. 动态库:


?生成动态库:

dy-lib=libmymath.so
$(dy-lib):Add.o Sub.o Div.o Mul.o TestMain.o
    gcc -shared -o $@ $^
%.o:%.c
    gcc -fPIC -c $<
output:
    mkdir mymath_lib
    cp $(dy-lib) mymath_lib
    rm *.o
登录后复制

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密


?使用动态库:

方法一:直接安装到系统中

我们系统文件中有存放头文件和库文件的地方,我们只需要将我们的头文件和库文件拷贝到对应目录下,就可以直接使用动态库链接。

LuckyCola工具库
LuckyCola工具库

LuckyCola工具库是您工作学习的智能助手,提供一系列AI驱动的工具,旨在为您的生活带来便利与高效。

LuckyCola工具库 19
查看详情 LuckyCola工具库
/usr/include // 头文件
/lib64 // 库文件
登录后复制

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密

我们将自己的文件安装到系统文件中后,就可以使用动态库了。

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密


方法二:通过使用软连接,查找动态库

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密

当然我们也可以直接将软连接安装到系统文件中。

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密


方法三:使用环境变量的方式

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密


方法四:更改系统关于动态库的配置文件

先在目录下创建一个文件。

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密

在文件中,保存一下我们的库路径。

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密

运行ldconfig,让更改生效。

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密


使用外部库:

使用外部库的本质就是将外部库的头文件和库文件安装到我们的系统目录下,我们就可以使用这个库了。


?4. 动态库加载:

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密


?5. 总结:

总之,Linux基础IO中的动静态库不仅是技术层面的选择,更是对软件开发理念、效率与可维护性之间平衡的深刻体现。随着技术的不断进步,我们期待看到更多创新性的解决方案,能够进一步简化开发流程,提升软件质量,让开发者能够更加专注于业务逻辑的实现,而非被底层技术细节所束缚。愿我们都能在技术的海洋中乘风破浪,不断前行,共同推动软件技术的发展与进步。

希望本文能够为你提供有益的参考和启示,让我们一起在编程的道路上不断前行!谢谢大家支持,本篇到这里就结束了,祝大家天天开心!

以上就是【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号