欢迎光临散文网 会员登陆 & 注册

C++基础语法梳理:链接装载库丨Linux 的共享库

2021-10-30 19:09 作者:C语言编程__Plus  | 我要投稿

Linux 的共享库(Shared Library)

Linux 下的共享库就是普通的 ELF 共享对象。

共享库版本更新应该保证二进制接口 ABI(Application Binary Interface)的兼容

命名

libname.so.x.y.z

x:主版本号,不同主版本号的库之间不兼容,需要重新编译

y:次版本号,高版本号向后兼容低版本号

z:发布版本号,不对接口进行更改,完全兼容

路径

大部分包括 Linux 在内的开源系统遵循 FHS(File Hierarchy Standard)的标准,这标准规定了系统文件如何存放,包括各个目录结构、组织和作用。

/lib:存放系统最关键和最基础的共享库,如动态链接器、C 语言运行库、数学库等

/usr/lib:存放非系统运行时所需要的关键性的库,主要是开发库

/usr/local/lib:存放跟操作系统本身并不十分相关的库,主要是一些第三方应用程序的库

动态链接器会在 /lib、/usr/lib 和由 /etc/ld.so.conf 配置文件指定的,目录中查找共享库

环境变量

LD_LIBRARY_PATH:临时改变某个应用程序的共享库查找路径,而不会影响其他应用程序

LD_PRELOAD:指定预先装载的一些共享库甚至是目标文件

LD_DEBUG:打开动态链接器的调试功能

so 共享库的编写

使用 CLion 编写共享库

创建一个名为 MySharedLib 的共享库

CMakeLists.txt

library.h

library.cpp

so 共享库的使用(被可执行项目调用)

使用 CLion 调用共享库

创建一个名为 TestSharedLib 的可执行项目

CMakeLists.txt

main.cpp

执行结果

今天的分享就到这里了,大家要好好学C++哟~

写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

微信公众号:C语言编程学习基地

C语言零基础入门教程(83集全)

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!



C++基础语法梳理:链接装载库丨Linux 的共享库的评论 (共 条)

分享到微博请遵守国家法律