在
Linux上,有没有办法将版本信息嵌入到ELF二进制文件中?我想在编译时嵌入这些信息,以便以后可以使用脚本将其解压缩.一种hackish方式是植入可以使用strings命令提取的东西.是否有更传统的方法,类似于Visual Studio植入Windows DLL的版本信息(DLL属性中的注释版本选项卡)?
解决方法
如果使用cvs或subversion,一种方法是在源文件中专门设置一个特殊的id字符串.然后向cvs或svn添加预提交挂钩,以便在提交更改时使用新版本的文件更新该特殊变量.然后,在构建二进制文件时,您可以使用ident来提取该信息.例如:
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是唯一的选择,这意味着您可以找到更好的方法来实现相同的目标.