[英]How to I tell Rust where to look for a static library?
有没有办法告诉Rust在哪里寻找我的静态库? 示例代码
#[link(name = "/this/is/the/path/libfoo.a", kind = "static")]
如果没有,我可以进行什么配置更改或者我将库放在哪个文件夹中以便我可以使用它?
rustc
调用系统链接器,该链接器查找库目录中#[link(...)]
中指定的所有库。 通常有几个默认库目录(如Linux上的/lib
和/usr/lib
),还可以通过链接器标志指定更多( rustc
接受-L
选项,然后将其传递给链接器)。
如果直接调用rustc
,则可以使用-L
选项添加其他库目录,然后将其传递给链接器。 但是,如果您使用Cargo,您还有更多选择:
Cargo将/target/<profile>/deps
目录添加为库源目录。
你可以使用cargo rustc
cargo rustc -- -L /path/to/library/directory
您可以指定RUSTFLAGS
环境变量:
RUSTFLAGS='-L /path/to/library/directory' cargo build
您可以使用构建脚本输出更多链接器选项
println!("cargo:rustc-link-lib=static=foo"); println!("cargo:rustc-link-search=native=/path/to/foo");
我认为,最简单的方法是添加一个自定义构建脚本 ,该脚本将在相应的/target/<profile>/deps
目录中复制或创建符号链接到库。
为了增加接受的答案,对我有用的是:
target/debug/deps
工作; 但是将文件放在target/debug/native/*
似乎不起作用。 默认情况下,Cargo似乎只在target/debug/deps
下查找。
您可以使用cargo build --verbose
运行以查看详细的rustc
命令和使用的选项。 -L
选项指定其他链接依赖项目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.