soname(简单共享名,Short for shared object name),在linux下使用动态库时,经常会发现明明编译时指定的是libA.so,可是程序运行时或通过ldd查看依赖却是libA.so.XXX,这个就是通过-Wl,-soname指定的,soname的指定方式通过有以下两种方式:

(1)直接在Makefile中通过-Wl,-soname ,如:

-Wl,-soname,libssl.so.${SHLIB_MAJOR}.${SHLIB_MINOR}

(2)通过libtool的-version-info(最终也是使用-Wl,-soname),如:

Makefile中定义如下:

libosipparser2_la_LDFLAGS = -version-info $(LIBOSIP_SO_VERSION) \ $(PARSER_LIB) $(EXTRA_LIB) -no-undefined

libosipparser2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libosipparser2_la_LDFLAGS) $(LDFLAGS) -o $@

实际参数如下所示:

./libtool --tag=CC --mode=link aarch64-linux-android-gcc -O2 -Wno-system-headers -fvisibility=hidden -o libcares.la -rpath /home//sipproto/src/libcares-1.7.4/../../objects/lib -version-info 2:0:0 ares__close_sockets.lo

搞清楚设置方式后要修改so库为不带版本号的简单多了:

(1)去除-soname后的库名,直接改成.so结尾

ps:当然不可能这么简单,这个还要修改一片相关联的变量,以openssl.0.9.7例,需要修改以下文件

Makefile.ssl

Makefile

(2)将-version-info改成-avoid-version

以上就是指定和修改so库的两种方式,如果其他方式请告知

linux修改http版本信息,动态库中的soname中版本号的修改相关推荐

  1. 如何让linux加载当前目录的动态库

    debian从7.0开始支持multiarch,64位库的路径改到/usr/lib/x86_64-linux-gnu了,mint.ubuntu这些衍生版有没有跟着改我就不清楚了. deepin lin ...

  2. [Linux] 如何让linux加载当前目录的动态库

    linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的.window ...

  3. linux定位so快捷方式_Linux动态库(.so)搜索路径 | 学步园

    众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib.动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库, 并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索 ...

  4. linux 下查看应用版本信息,Linux下查看版本信息

    Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等. 1.# uname -a   (Linux查看版本当前操作系统内核信息) 2.# cat /proc/vers ...

  5. 怎么看linux Java版本,查看linux的java版本信息

    查看linux的java版本信息 [2021-02-10 01:02:40]  简介: linux系统查看jdk版本的方法是:可以通过[java -version]命令来查看.具体方法是:1.打开终端 ...

  6. 如何查看Linux的java版本,查看linux的java版本信息

    查看linux的java版本信息 [2021-02-10 01:02:40]  简介: linux系统查看jdk版本的方法是:可以通过[java -version]命令来查看.具体方法是:1.打开终端 ...

  7. linux 怎么查看go版本,如何在Linux下查看版本信息

    Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等等,整个CPU信息一目了然. 1.# uname -a   (Linux查看版本当前操作系统内核信息) Linux ...

  8. linux下查看bios命令,Linux查看BIOS版本/信息详情

    Linux查看BIOS版本/信息详情 命令如下: #dmidecode -t 0 例子: root@DS:~# dmidecode -t 0 # dmidecode 2.12 # SMBIOS ent ...

  9. 查看Linux当前操作系统版本信息常用命令

    查看Linux当前操作系统版本信息常用命令 Linux查看当前操作系统版本信息 Linux查看版本当前操作系统内核信息 linux查看版本当前操作系统发行信息 Linux查看cpu相关信息,包括型号. ...

最新文章

  1. senfile函数实例的运行过程截图
  2. linux操作系统的特点有哪些,LINUX操作系统有哪些概念和特点?
  3. 分享丨强化学习是针对优化数据的监督学习?
  4. oj上c语言编译错误,名字的漂亮度(华为OJ)C语言版本(提示格式错误,但是编译器没有报错,知道的网友提个意见)...
  5. 陌上花开 HYSBZ - 3262 (CDQ分治)
  6. Yii2.0 rules常用验证规则
  7. LIVE555play流程
  8. android apk 微信登入_Android集成微信登录的步骤详解
  9. 台达ASDA-A2速度模式调试方法
  10. 实现基于SSM开发房屋租赁系统
  11. 【FFmpeg系列】使用FFmpeg实现视频图像旋转、翻转或转置
  12. word文档批量处理表格
  13. Android多语言支持二
  14. 安卓游戏广告加速插件_这是一个你值得拥有的安卓小插件.....
  15. cJSON详细剖析(四)----cJSON_Print()函数
  16. 2.4.2 死锁的处理策略-预防死锁(破坏互斥条件、破坏不可剥夺条件、破坏请求和保持条件、破坏循环等待条件)
  17. mac 默认输入法禁用,删除?
  18. bat命令映射网络驱动器
  19. html中设置浏览器解码方式
  20. 电子配线架的应用和技术

热门文章

  1. Python提取 Gprmax 3.0 的out文件数据
  2. daemons java,java.lang.ThreadGroup.isDaemon()方法实例
  3. 手持gps坐标转换参数求解方法及在excel中的实现_地质填图手持GPS的校正方法
  4. Linux 安装多个版本JDK并设置默认版本
  5. 第十章:在Spark集群上掌握比较重要的图操作之Computing Degree
  6. 微信小程序canvas绘制图片的注意事项---不能是网络图片
  7. php 获取config,PHP MVC如何自动调用config?
  8. 微服务主见传递ID还是json_后台管理系统之微服务搭建
  9. python求100以内的素数和(只作新手参考)
  10. 编程实现Strassen矩阵乘法