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是唯一的选择,这意味着您可以找到更好的方法来实现相同的目标. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |