我正在使用Rust 0.11-pre编译一个简单的staticlib
#![crate_type = "staticlib"]
#[no_mangle]
pub extern "C" fn foo() {
}
然后我用
编译rustc foo.rs --crate-type="staticlib" -o foo.a
它工作正常,但我收到以下警告,我想知道如何解决它们
warning: unlinked native library: System
warning: unlinked native library: c
warning: unlinked native library: m
答案 0 :(得分:1)
我正在研究别的东西,碰巧遇到了这个:我知道发生了什么。
Rust staticlib没有链接到其所有本机依赖项。在将staticlib链接到另一个程序时,您需要链接这些库,例如在Linux上,我必须编译gcc my_c_program.c -L . -lfoo -lc -lpthread -lm -ldl
其中foo.a
是Rust staticlib(在当前目录中),最后四个args是具有“未链接的本机库”警告的库(严格来说{ {1}}是不必要的,因为C编译器默认链接libc。