加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux:如何将版本信息嵌入共享库和二进制文件?

发布时间:2020-12-13 16:57:03 所属栏目:Linux 来源:网络整理
导读:在 Linux上,有没有办法将版本信息嵌入到ELF二进制文件中?我想在编译时嵌入这些信息,以便以后可以使用脚本将其解压缩.一种hackish方式是植入可以使用strings命令提取的东西.是否有更传统的方法,类似于Visual Studio植入Windows DLL的版本信息(DLL属性中的注
在 Linux上,有没有办法将版本信息嵌入到ELF二进制文件中?我想在编译时嵌入这些信息,以便以后可以使用脚本将其解压缩.一种hackish方式是植入可以使用strings命令提取的东西.是否有更传统的方法,类似于Visual Studio植入Windows DLL的版本信息(DLL属性中的注释版本选项卡)?

解决方法

如果使用cvs或subversion,一种方法是在源文件中专门设置一个特殊的id字符串.然后向cvs或svn添加预提交挂钩,以便在提交更改时使用新版本的文件更新该特殊变量.然后,在构建二进制文件时,您可以使用ident来提取该信息.例如:

将这样的内容添加到您的cpp文件中:

static char fileid[] = "$Id: fname.cc,v 1.124 2010/07/21 06:38:45 author Exp $";

在程序上运行ident(可以通过安装rcs找到)应该显示有关其中包含id字符串的文件的信息.

ident program
program:
    $Id: fname.cc,v 1.124 2010/07/21 06:38:45 author Exp $

注意正如人们在评论中提到的,这种技术是陈旧的.让源代码控制系统自动更改源代码非常丑陋,而且源代码管理已经改进,因为cvs是唯一的选择,这意味着您可以找到更好的方法来实现相同的目标.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读