当前位置:  开发笔记 > 编程语言 > 正文

有没有一种方法可以将版本信息存储在Rust编译的可执行文件或库中?

如何解决《有没有一种方法可以将版本信息存储在Rust编译的可执行文件或库中?》经验,为你挑选了0个好方法。

构建Rust二进制文件(可执行文件或dylib)时,其中配置的版本信息Cargo.toml对所构建的二进制文件无效,这意味着配置的版本未存储在二进制文件中。

在Linux中,当我使用readelf -V.so文件时,可以看到支持的接口(SO名称)存储在ELF文件的版本定义部分'.gnu.version_d'下。例如,输出readelf -V /lib/libnss_files-2.12.so

Version definition section '.gnu.version_d' contains 2 entries:
   Addr: 0x0000000000001540  Offset: 0x001540  Link: 5 (.dynstr)
   000000: Rev: 1  Flags: BASE   Index: 1  Cnt: 1  Name: libnss_files.so.2
   0x001c: Rev: 1  Flags: none  Index: 2  Cnt: 1  Name: GLIBC_PRIVATE

/lib/libnss_files-2.12.so文件正在实现接口版本libnss_files.so.2

readelf -VRust或Cargo生成的dylib或可执行文件的输出不包含此类版本信息。版本配置中Cargo.toml仅由crates.io使用。

而且,Windows DLL支持存储版本信息,而不是像Linux这样的SONAME接口版本名称。交叉编译的Windows DLL也没有版本信息。也许这是另一个问题,但我想我首先要提出一点。

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有