【发布时间】:2015-08-12 22:05:57
【问题描述】:
我正在尝试修改 Racer 以发出共享库而不是 rlib。
为此,我将crate-type = ["dylib"] 添加到货物清单的[lib] 部分,然后运行cargo build --lib。这很好,libracer.so 被发出。
不幸的是,现在我无法构建 Racer 二进制文件,它依赖于库的静态版本。运行cargo build 抱怨:
Compiling racer v1.0.0 (file:///home/georgev/dotfiles/vim/bundle/racer)
error: cannot satisfy dependencies so `std` only shows up once
help: having upstream crates all available in one format will likely make this go away
error: cannot satisfy dependencies so `core` only shows up once
help: having upstream crates all available in one format will likely make this go away
error: cannot satisfy dependencies so `collections` only shows up once
help: having upstream crates all available in one format will likely make this go away
error: cannot satisfy dependencies so `rustc_unicode` only shows up once
help: having upstream crates all available in one format will likely make this go away
error: cannot satisfy dependencies so `alloc` only shows up once
help: having upstream crates all available in one format will likely make this go away
error: cannot satisfy dependencies so `libc` only shows up once
help: having upstream crates all available in one format will likely make this go away
error: cannot satisfy dependencies so `rand` only shows up once
help: having upstream crates all available in one format will likely make this go away
error: aborting due to 7 previous errors
Could not compile `racer`.
我把crate-type改成了["dylib", "bin"],这样编译就成功了。但是,cargo build --lib 将不再发出共享库(只有 rlib)。
如何指定我想要构建的库类型,同时仍然允许静态构建所述库以包含在可执行文件中?
【问题讨论】:
标签: shared-libraries rust rust-cargo