【问题标题】:Removing hash extension from cargo dylib naming从货物 dylib 命名中删除哈希扩展
【发布时间】:2015-04-04 18:10:11
【问题描述】:

Cargo.toml

[lib]
name = "faceblaster-engine"
crate_type = ["dylib"]

每当我执行 cargo build 时,我的 dylib 都会被命名:

libfaceblaster-engine-f09635dc7c9bd155.so.

是否可以在.toml 文件中添加一些内容以删除放在末尾的哈希?

提前感谢您的帮助!

【问题讨论】:

  • 为什么要删除哈希?
  • @ChrisMorgan 我想只是为了与我的其他库目录保持一致。如果出于任何原因,它发生了变化,我真的很不想去调整任何需要改变哈希的东西,但不知道是什么导致哈希改变。
  • 如果有一个构建步骤(某处)来执行cp target/release/mylib-*.so libs/mylib.so 怎么样?
  • @ChrisMorgan 我对如何获取版本号而不是哈希感兴趣。例如,我安装了libpng.dyliblibpng16.dyliblibpng16.16.dylib。我希望能够创建适合生态系统其他部分的库。
  • 我现在已经把它作为构建步骤,只是想知道是否有办法摆脱它,但我猜我在某个时候被困在上面运行 bash 命令...

标签: shared-libraries rust rust-cargo


【解决方案1】:

这个哈希是一堆元数据的结果,IIRC 包括用于制作它的 Rust 编译器的版本。因为 Rust 没有定义的 ABI,所以你只能使用这个库,它与用于制作它的编译器的 SHA 完全相同。删除这些数据会抹去你知道自己是否可以真正成功使用它的能力。

【讨论】:

  • 除非编译器首先检查名称,否则我认为在出现链接器错误之前没有办法告诉您? rustc --version 在该哈希附近没有显示任何内容?在那一点上,除非在链接之前有办法告诉它,否则它的名称似乎没有用?我将它与 C++ 垫片链接,所以我有 C ABI 公开使用的核心入口函数...
  • 不仅仅是版本,还有其他信息。
猜你喜欢
  • 2017-12-19
  • 1970-01-01
  • 2017-10-25
  • 2011-05-29
  • 2012-04-19
  • 2012-06-29
  • 2015-03-20
  • 2012-08-27
相关资源
最近更新 更多