linux下如何自己编写一套动态链接库(shared object)

本文介绍了Linux下动态链接库的概念、命名规则,并通过一个简单的整数相加例子,演示了如何编写、编译、链接及运行动态链接库(.so)。重点讲解了动态链接库的命名规范、软链接、ld配置以及解决找不到库的问题。

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

场景:

    很多时候我们写代码的时候会经常用到某些代码段,比方说求两个或几个整数的和或者将一个整形数组转化为二叉树等等。经常使用这些代码,但是每一次又得重新再写一遍,次数多了等于就是重复无用劳动了。所以,可以自己动手写一个自己的动态链接库,保存起来。下次用到只需要加上库就ok了,这样既方便了自己又对动态链接库本身的工作原理理解更深了。

linux下动态链接库:

    简介

    windows的链接库和linux的链接库在实现原理上大同小异,只是名字有点区别罢了。链接库分两种,动态的和静态的。windows下分别用.lib和.dll来表示,而linux下用.a和.so来表示。静态链接库是指编译代码时即将整个库编到可执行文件中,此时该程序完全拥有库所实现的功能,即运行时不再和库有任何瓜葛。动态链接库则不一样,编译时只是将库中所用到的函数和功能的入口地址编译到可执行文件中,当程序执行到该函数时,程序即跳转到库的函数入口处,因此它们之间是动态的联系在一起的。

   linux下so的命名方法

   linux下动态链接库有一套自己的命名方法,只有正确命名才能够正确的加载和运行。方法为libxxx.so.x,其中xxx表示名字,一般来说就是该so库的作用,后面的x表示版本号,因为so库往往会有版本升级。


    而在加载时往往用的是该so库的软链接,如上图的蓝色所示,如果版本升级了只需要将软链接链到最新的so库就能解决问题,所以这种方法很实用。

编写一个简单的so库:

    比方将两个整型数相加

//add.cc
int add(int x, int y)
{
   return x+y;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值