c-动态库的版本问题(libldap)

问题描述

动态库的版本问题(libldap)

程序依赖了libldap, 在makefile写了-lldap参数,连接报错找不到库,发现/usr/lib64下面是类似libldap-2.2.so.7这种命名方式,2.2-2.4都有,还有libldap r-2.2.so.7这种。
想请问一下,这些版本的兼容性如何,为何没有遵循so.x.x.x这种方式来管理版本问题呢?

解决方案

 -lldap-2.2

库开发者不遵循版本命名,你也没办法

解决方案二:

之前用redhat是libldap.so.xxx,后来换成centos,就发现都是这样的了,官网上也没看到相关的兼容性信息

解决方案三:

不怕麻烦的话,手动创建软链接吧。

解决方案四:

这个命名没有统一的标准,跟开发的人的观点有关

一般都是通过建立软连接的方式来变成libxxxx.so使用

时间: 2024-08-24 12:23:51

c-动态库的版本问题(libldap)的相关文章

解决Linux动态库版本兼容问题

说道"动态库版本兼容",很多人头脑中首先蹦出的就是"Dll Hell".啊,这曾经让人头疼的难题.时至今日,这个难题已经很好地解决了. 在进一步讨论之前来思考一个问题:Linux下为什么没有让人头痛的"DllHell"?回答这个问题,非常easy,因为--Linux下根本没有dll! 哈哈,当然这只是个玩笑,接下来展开一下这个话题,很多有动态库的系统都会面临这个难题,但各自解决的思路却各不相同. Dll hell是指windows 上动态库新版本

关于Linux静态库和动态库的分析

原文:http://linux.chinaunix.net/techdoc/net/2009/02/04/1060670.shtml 1.什么是库 在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的本质不同,因此二者库的二进制是不兼容的. 本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同.静态库的代码在编译

Linux下如何用GCC编译动态库

  本文主要解决以下几个问题 1 为什么要使用库? 2 库的分类 3 创建自己的库 或许大家对自己初学 Linux时的情形仍记忆尤新吧.如果没有一个能较好的解决依赖关系的包管理器,在Linux下安装软件将是一件及其痛苦的工作.你装a包时,可能会提示你要先装b包,当你费尽心力找到b包时,可能又会提示你要先安装c包.我就曾被这样的事搞的焦头烂额,至今一提起rpm仍心有余悸,头皮发麻.说是一朝被蛇咬,十年怕井绳怕也不为过. Linux下之所以有这许多的依赖关系,其中一个开发原则真是功不可没.这个原则就

java-Java程序调用动态库的问题,Can't find dependent libraries

问题描述 Java程序调用动态库的问题,Can't find dependent libraries win7 32位系统上,java程序调用Qt写的动态库,Qt build的时候没报任何错.System.load()的时候报错Can't find dependent libraries. 我用depends.exe 这个工具查看DLL信息,开始的时候确实报错说有几个依赖的动态库找不到,我就在网上下载了放到system32目录下.depends不报错了(但是有一个警告:At least one

动态库是什么?怎么检查动态库是否正确?

问题描述 动态库是什么?怎么检查动态库是否正确? 什么是软件动态库?软件安装号之后如何检查动态库是否正确?手机软件安装之后会有动态库吗? 解决方案 动态链接库,也就是我们看到的DLL文件,如果少了DLL文件的话软件是运行不了的!,,手机这快我就不知道了 解决方案二: 動態連結函式庫(Dynamic-link library,缩写为DLL)是**微软公司在微软视窗操**作系统中实现共享函数库概念的一种实作方式.这些函式庫函数的扩展名是.DLL..OCX(包含ActiveX控制的函式庫)或者.DRV

【原创】MySQL Connector/C 库的版本选择

      公司内部封装的的 dbi 库依赖于 mysql connector/c 库,但由于历史原因,其所依赖的  mysql connector/c 库的版本为原始的 v6.0.2 , 为了对此现状作出调整,现梳理如下:  v6.0.2 [win] (动态库) libmysql.dll libmysql.lib (静态库) mysqlclient.lib  [linux] (共享库) libmysql.so.16.0.0(静态库) libmysqlclient.a  v6.1.5 === 以

unity3d-unity5.0 引用自定义动态库

问题描述 unity5.0 引用自定义动态库 unity5.0 (bate 64bit) 引用自定义动态库,生成apk包 ,能把.so文件打包进去,但安卓上运行找不到这个.so文件,找不到该文件.3.5版本一切正常?新版是有改动么? 1.AssetsPluginsAndroid 目录建立了,也把.so放进去了 2..so文件的平台和 playerseting中的device filter 也选成ARMV 7 了 3.生成的APK包里libarmeabi-v7a 目录下也能找到这个.so文件 4.

Android Robolectric加载运行本地So动态库

前言 Robolectric 是 Android 的单元测试框架,运行无需 Android 真机环境直接运行在 JVM 之上,所以在 test case 运行速度效率上有了很大提升,接近于 Java JUnit test(JUnit test > Robolectric ≫ androidTest).不过框架本身并不支持 so 本地库的加载使用,加载时会直接报错,因为实际上运行环境是电脑机器,而我们打出的 so 文件是给手机上用的所以当然会报错.虽然在 GitHub 上很多人问过关于使用 so

Linux静态库和动态库的编写和使用

Linux静态库和动态库的编写和使用 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.   1  静态库和动态库的区别 1.1. 静态函数库    (1)静态函数库的名字一般是lib[name].a (2)利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,它的优点是编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了.这给它带来的缺点为如果静态函数库改变了,那么你的程序必须重新编译. 1.2. 动态