如何在IntelliJ IDEA中为锈项目指定LD_LIBRARY_PATH?

时间:2019-06-19 19:35:42

标签: intellij-idea rust

我正在使用IntelliJ IDEA进行防锈实验。为了了解如何调用用其他语言创建的库,我用C创建了一个微型动态库,其.so文件位于../expclib1/libexp1.so中。

我如何告知intellij和rust

#[link(name="exp1")]
extern {
    fn bacon()->i32;
}

住在../expclib1/libexp1.so吗?我知道在C语言中,您需要在链接阶段指定-L../expclib1 -lexp1,然后再尝试运行export LD_LIBRARY_PATH=../expclib1。我该如何利用货物进行这项工作,以及如何通过intellij的运行菜单进行这项工作? intellij内部的模块上基本上没有选项,因此我希望可以在Cargo.toml中指定它们。

1 个答案:

答案 0 :(得分:1)

可以使用通常位于build.rs旁边的Cargo.toml文件指定生锈的额外链接参数。这是一个示例build.rs

fn main() {
    println!("cargo:rustc-link-search=../expclib1\n\
    cargo:rustc-link-search=/opt/oracle-jdk-bin-1.8.0.202/jre/lib/amd64/jli\n\
    cargo:rustc-link-search=/opt/oracle-jdk-bin-1.8.0.202/jre/lib/amd64/server\n\
    cargo:rustc-link-lib=dylib=exp1\n\
    cargo:rustc-link-lib=dylib=jli\n\
    cargo:rustc-link-lib=dylib=jvm");
}

关于查找jni和jvm库,该示例可能应该更聪明一些,因为并非每个系统都将运行/opt中安装的Java 1.8.0.202。

来自输出的设置货物用途记录在防锈文档的Build Scripts部分。

那只会使应用程序链接。要使其运行,您必须通过设置如下环境变量来修改IntelliJ的运行配置:

setting environment variables for a run configuration