铁锈货物dylib澄清
问题描述:
我有一个Rust项目,我想嵌入另一个应用程序作为dylib。我有crate_type = ["dylib"]
设置在我的Cargo.toml
中,但我不确定这是否应该是cdylib
。铁锈货物dylib澄清
当我生成项目,它产生target/debug
如预期libfoo.dylib
,但看着otool -L
还链接针对target/debug/deps/
一个libfoo.dylib
。如果我打算在另一个应用程序中使用它,我是否必须提供这两个dylib?
另外,当箱子类型为cdylib
时,它也会生成两个dylib,但是deps中的一个将在文件名末尾加上一个哈希。我不确定这两个箱子类型之间有什么区别。
我可以避免使用rustc来获得两个dylib,但是我想使用货物。在其他应用程序中将Rust作为dylib嵌入的推荐方式是什么?
我使用防锈在MacOS 10.12,如果这是显著
答
了些研究后,事实证明cdylib
静态链接锈的依赖,并dylib
是与其他防锈项目动态链接。
至于嵌入,我发现的一切都表明静态链接Rust库是推荐的方法。为了动态使用Rust库,在我的[profile]
部分中设置rpath = true
解决了冗余dylib问题。