2015-02-05 58 views
3

Cargo.toml刪除哈希擴展命名

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

每當我執行我的cargo build dylib被命名爲:

libfaceblaster-engine-f09635dc7c9bd155.so

無論如何要添加一些東西到.toml文件,以消除放在末尾的散列?

在此先感謝您的幫助!

+0

你爲什麼要刪除散列? –

+0

@ChrisMorgan我想只是爲了與我的其餘libs目錄的一致性。如果由於任何原因,它會發生變化,我真的很討厭通過並調整任何需要散列更改的東西,但不知道會導致散列更改的是什麼。 – nathansizemore

+0

如果只有一個構建步驟(某處)執行'cp target/release/mylib - *。so libs/mylib.so',怎麼辦? – Shepmaster

回答

1

這個散列是一堆元數據的結果,其中IIRC包括用於製作它的Rust編譯器的版本。因爲Rust沒有定義的ABI,所以你只能使用這個庫和編譯器的完全相同的SHA來完成它。擦除這些數據將會消除您知道您是否可以成功使用它的能力。

+0

除非編譯器首先檢查名稱,我認爲有沒有辦法告訴你,直到你得到鏈接器錯誤? 'rustc --version'在這個散列附近沒有顯示任何東西?在那個時候,除非在鏈接之前有一種說明方式,否則它在名稱中似乎沒有用處。我將它與C++ shim鏈接起來,所以我有C ABI公開使用核心入口函數... – nathansizemore

+0

它不僅僅是版本,還有其他信息。 –