繁体   English   中英

如何告诉Rust在哪里寻找静态库?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM