认识 lib 目录里的 .so 文件
当我们安装了共享库并运行了 ldconfig
之后,通常我们会在 lib/
里看到三个 .so
文件。这里的 so 是 shared object 之意。
libfoo.so.1.0.0
这是普通的(regular)共享库文件。可能有多个版本的该文件并存。
libfoo.so -> libfoo.so.1.0.0
这个符号链接一般用在程序的链接过程(link)。你向 linker 指定的参数 -lfoo
便是在寻找并链接 libfoo.so
这个文件。通常情况下这总是个指向具体动态库的符号链接,因为有可能你需要在不同版本的库间切换。
libfoo.so.1 -> libfoo.so.1.0.0
这个符号链接一般用在程序的运行时。每个 .so
都会有一个 SONAME。应用程序根据 SONAME 来寻找并加载共享库。libfoo.so.1
就是一个 SONAME。你可以通过 objdump -p libfoo.so.1.0.0
或 readelf -d libfoo.so.1.0.0
查看它。对于共享库的编写者来说,SONAME 相同的库应互相兼容。
有些包管理器(如 debian)会使用不同的包名来表示不同版本的共享库,因此你可以独立地安装、卸载、使用特定的共享库版本。
ldconfig
可以根据 libfoo.so.1.0.0
这样的共享库文件生成相应的符号链接文件。
你可能会遇到下述情况,这会导致崩溃:
- app 使用了共享库
liba.so.2
和libb.so.1
libb.so.1
使用了共享库liba.so.1
可以看到,程序同时加载了不同版本的 liba.so
。
拓展阅读

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Akka向设备组添加Actor注册《thirteen》译
我们已经完成了设备级别的注册支持,现在我们必须在组级别实现它。在注册时,小组成员还有更多工作要做,包括: 通过将注册请求转发给现有设备actor或通过创建新actor并转发消息来处理注册请求。 跟踪组中存在哪些设备Actor,并在组停止时从组中删除它们。 处理注册请求 设备组Actor必须将请求转发给现有子项,或者应创建一个。要通过设备ID查找子actor,我们将使用Map <String,ActorRef>。 我们还希望保留请求的原始发件人的ID,以便我们的设备角色可以直接回复。这可以通过使用forward而不是tell运算符来实现。两者之间的唯一区别是,forward会保留原始发件人,而tell会将发件人设置为当前的actor。就像我们的设备actor一样,我们确保不会响应错误的组ID。将以下内容添加到源文件中: Full source at GitHub 正如我们对设备所做的那样,我们测试了这个新功能。我们还测试了返回两个不同ID的Actor实际上是不同的,我们还尝试记录每个设备的温度读数,以查看Actor是否正在响应。 Full source at GitHub 如...
-
下一篇
大众点评评分爬取-图文识别ORC
大众点评评分爬取-图文识别ORC 十一了,没出去玩,因为老婆要加班,我陪着。 晚上的时候她说要一些点评的评分数据,我合计了一下scrapy request一下应该很好做,就答应下来了,感觉没什么难度嘛。 但是呢没那么简单。需要人验证的问题就不说了,我觉得这个我也解决不了,比较吸引我的是他的评分展现方式。 大众点评这块展示用的是图片,css offset方式 selector那套行不通 这里我使用的 tesseract 图片文字识别 下面是大概流程 爬取页面 这里是使用Selenium进行页面访问,然后截屏 代码片段 opt = Options() opt.add_argument('--headless') self.driver = webdriver.Chrome(executable_path='/Users/xiangc/bin/chromedriver', options=opt) self.wait = WebDriverWait(self.driver, 10) self.driver.get('http://www.dianping.com/shop/4227604')...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- MySQL数据库在高并发下的优化方案
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7,8上快速安装Gitea,搭建Git服务器