编辑linux的.so文件,c++ 在编译之后更改Linux共享库(.so文件)版本

我正在编译Linux库(对于

Android,使用NDK的g,但我敢打赌,我的问题对于任何Linux系统都是有道理的).将这些图书馆交付给合作伙伴时,我需要使用版本号码进行标记.我还必须能够以编程方式访问版本号(例如在“关于”对话框或GetVersion函数中显示).

我首先使用unversioned标志(版本0.0)来编译库,当我在发送给合作伙伴之前完成测试时,需要将此版本更改为真实的.我知道修改源代码并重新编译会更容易,但是我们不想这样做(因为我们应该再次测试一遍,如果我们重新编译代码,我们觉得这样会更容易出错,看到这个意见post,最后因为我们的开发环境是这样工作的:我们为Windows二进制程序做这个过程:我们设置一个0.0资源的版本字符串(.rc),然后我们使用verpatch改变它…我们想使用相同的运送Linux二进制文件时的进程).

这里最好的策略是什么?

总而言之,要求是:

>使用“未设置”版本编译二进制文件(0.0或其他)

>可以将这个“未设置”版本修改为特定的版本,而无需重新编译二进制文件(理想情况下,运行第三方工具命令,如同Windows下的verpatch一样)

>可以让库代码在运行时检索它的版本信息

如果您的答案是“.so”,那么请提供一个解决方案3:如何在运行时检索版本名称(即文件名).

我在想一些解决方案,但不知道他们是否可以工作,如何实现它们.

>在代码中有一个版本变量(一个字符串或3个int),并且有一种方法可以在二进制文件中更改它?使用二进制sed …?

>在资源中有一个版本变量,并有一种方法可以在二进制文件中更改它? (正如我们为win32 / win64)

>使用专用于.so(如SONAME)的字段,并具有允许更改它的工具,并使其可从C代码访问.

>重命名lib更改SONAME(没有找到如何实现)…并找到一种从C代码检索它的方法.

> …

请注意,我们使用QtCreator来编译Android .so文件,但是它们可能不依赖于Qt.所以使用Qt资源不是一个理想的解决方案.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值