wordpress 架站东莞轻推网络公司
news/
2025/10/6 16:03:30/
文章来源:
wordpress 架站,东莞轻推网络公司,wordpress 获取图片地址,lol网站建设目录
前言
一.静态库
1.1生成静态库
1.2 库搜索路径
1.3 静态库优点
1.4 静态库缺点
二.动态库
2.1 生成动态库
2.2 使用动态库
2.3 运行动态库
2.4 动态库的优点
2.5 动态库的缺点
三.链接过程
四.如何创建和管理库
五.总结 前言 Linux系统中的库#xff08;…目录
前言
一.静态库
1.1生成静态库
1.2 库搜索路径
1.3 静态库优点
1.4 静态库缺点
二.动态库
2.1 生成动态库
2.2 使用动态库
2.3 运行动态库
2.4 动态库的优点
2.5 动态库的缺点
三.链接过程
四.如何创建和管理库
五.总结 前言 Linux系统中的库Library是一组可被多个程序共享的代码和数据的集合。库的主要目的是代码复用和模块化它允许开发者在不同的程序中重复使用相同的代码而不需要每次都重新编写。在Linux中库主要分为两种类型静态库Static Libraries和动态库Dynamic Libraries。 一.静态库 静态库在编译时被整合到最终的可执行文件中。这意味着当你链接一个静态库到你的程序时库中的代码会被复制到最终的二进制文件里。静态库通常以.aArchive作为文件扩展名例如libexample.a。 1.1生成静态库
[rootlocalhost linux]# ls
add.c add.h main.c sub.c sub.h[rootlocalhost linux]# gcc -c add.c -o add.o
[rootlocalhost linux]# gcc -c sub.c -o sub.o
生成静态库[rootlocalhost linux]# ar -rc libmymath.a add.o sub.o
ar是gnu归档工具rc表示(replace and create)
查看静态库中的目录列表[rootlocalhost linux]# ar -tv libmymath.a
rw-r--r-- 0/0 1240 Sep 15 16:53 2017 add.o
rw-r--r-- 0/0 1240 Sep 15 16:53 2017 sub.o
t:列出静态库中的文件
v:verbose 详细信息[rootlocalhost linux]# gcc main.c -L. -lmymath
-L 指定库路径
-l 指定库名
测试目标文件生成后静态库删掉程序照样可以运行。
1.2 库搜索路径 从左到右搜索-L指定的目录。 由环境变量指定的目录 LIBRARY_PATH 由系统指定的目录 /usr/lib /usr/local/lib 1.3 静态库优点 应用程序在运行时不依赖于库文件因为代码已经被包含在内。通常在没有动态库支持的环境中如某些嵌入式系统更容易使用。程序的分发更为简单因为不需要附带额外的库文件。 1.4 静态库缺点 静态库的代码会被复制到每个使用它的程序中这可能导致磁盘空间和内存的浪费。更新静态库时所有使用该库的程序都需要重新编译。 二.动态库 动态库在程序运行时被加载。与静态库不同动态库的代码不会被复制到每个程序中而是在程序运行时从库文件中加载。动态库通常以.soShared Object作为文件扩展名例如libexample.so。 2.1 生成动态库 shared: 表示生成共享库格式 fPIC产生位置无关码(position independent code) 库名规则libxxx.so [rootlocalhost linux]# gcc -fPIC -c sub.c add.c [rootlocalhost linux]# gcc -shared -o libmymath.so *.o [rootlocalhost linux]# ls add.c add.h add.o libmymath.so main.c sub.c sub.h sub.o
2.2 使用动态库 编译选项 l链接动态库只要库名即可(去掉lib以及版本号) L链接库所在的路径. gcc main.o -o main –L. -lhello
2.3 运行动态库 1、拷贝.so文件到系统共享库路径下, 一般指/usr/lib 2、更改 LD_LIBRARY_PATH [rootlocalhost linux]# export LD_LIBRARY_PATH.[rootlocalhost linux]# gcc main.c -lmymath[rootlocalhost linux]# ./a.outadd(10, 20)30
sub(100, 20)80 3、ldconfig 配置/etc/ld.so.conf.d/ldconfig更新 [rootlocalhost linux]# cat /etc/ld.so.conf.d/bit.conf/root/tools/linux[rootlocalhost linux]# ldconfig
2.4 动态库的优点 节省磁盘空间和内存因为多个程序可以共享同一份库文件。更新动态库时只需替换库文件本身而不需要重新编译所有依赖它的程序。动态链接可以在运行时解决库的版本冲突问题。 2.5 动态库的缺点 程序在运行时需要库文件这意味着分发时需要确保库文件的存在。如果库文件损坏或者不兼容程序可能无法运行。 三.链接过程 在Linux中链接过程分为两个阶段编译Compilation和链接Linking。 编译将源代码如C或C代码编译成目标文件通常是.o文件。链接将目标文件与库文件链接在一起生成最终的可执行文件。 对于静态库链接发生在编译阶段而动态库的链接则发生在程序运行时。 四.如何创建和管理库 创建静态库和动态库通常涉及到使用编译器如GCC的特定选项。 例如创建动态库时你可能需要使用-shared选项而创建静态库则不需要。 管理库通常涉及到使用ldconfig命令它可以更新系统的库缓存确保ld.so动态链接器能够找到并加载正确的库文件。 五.总结 静态库和动态库各有优缺点选择使用哪一种通常取决于具体的应用场景和需求。 静态库适合于不需要频繁更新和分发简单的应用程序而动态库则更适合于需要节省空间、易于更新和维护的大型应用程序。 在实际开发中开发者可能会根据项目的特点和部署环境来决定使用哪种类型的库。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929480.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!