Linux高性能服务器开发:静态库和动态库

本文详细介绍Linux环境下静态库和动态库的命名、制作及使用方法,并通过实验演示如何创建加减乘除运算的静态库和动态库。此外还介绍了动态库的定位方式及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文属于牛客网上的一个项目笔记:Linux高性能服务器开发

目录

静态库:

命名:

制作:

使用

动态库:

命名:

制作:

使用:

静态库实验

动态库实验

如何定位动态库文件呢?

1、环境变量

2、配置/etc/ld.so.conf  追加动态库路径  再更新 sudo ldconfig

3、把动态库文件直接放到   /lib/或/usr/lib 目录   (不推荐)

静态库在程序的链接阶段被复制到程序中;动态库在程序运行中系统动态加载到内存中。

静态库

命名:

linux下的命名libxxx.a   注:xxx是库的名字  libxxx.a是库文件的名称

windows下的命名 libxxx.lib

制作:

1、gcc获得.o文件

2、将.o文件打包,使用ar工具(archive)

ar rcs libxxx.a xxx.o xxx.o    

r   将文件插入备存文件中
c   建立备存文件
s   索引

使用

gcc main.c -o app -I headfilepath -l xxx -L libfilapath

gcc 源文件 -o 目标文件 -I 头文件路径 -l 静态库名称 -L 静态库路径

动态库

命名:

linux下的命名libxxx.so   在linux下是一个可执行文件

windows下的命名 libxxx.dll

制作:

1、gcc得到.o文件,得到和位置无关的代码

gcc -c -fpic/-fPIC a.c b.c

2、gcc得到动态库

gcc -shared a.o b.o -o libxxx.so

使用:

gcc main.c -o app -I headfilepath -l xxx -L libfilapath

gcc 源文件 -o 目标文件 -I 头文件路径 -l 库名称 -L 库路径

静态库实验

做一个可以实现加减乘除的静态库

1、获得.o文件

2、生成静态库文件

3、在main中使用库

注:发布库的时候需要将头文件和库文件一起发布

动态库实验

做一个可以实现加减乘除的动态库

1、获得.o文件

2、生成动态库文件

3、在main中使用库

注意到,依赖动态库的my_app02提示缺少动态库,使用ldd 可以查看所依赖的动态库文件,

提示未找到,即没有加载到内存中

如何定位动态库文件呢?

        当系统加载可执行代码时候,能够知道其所依赖的库的名字,但是还需要知道绝对路径。此时就需要系统的动态载入器来获取该绝对路径。对于elf格式的可执行程序,是由ld-linux.so来完成的,它先后搜索elf文件的 DT_RPATH段—>环境变量LD_LIBRARY_PATH—>/etc/ld.so.cache文件列表—>/lib/或/usr/lib 目录找到库文件后将其载入内存。

解决办法:

1、环境变量

临时方法

用户方法:配置home目录下的   .bashrc     追加环境变量  再使之生效

系统方法:配置/etc/profile  同样 追加环境变量  再使之生效

2、配置/etc/ld.so.conf  追加动态库路径  再更新 sudo ldconfig

3、把动态库文件直接放到   /lib/或/usr/lib 目录   (不推荐)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值