【问题标题】:How do you specify the LD_LIBRARY_PATH for a rust project in IntelliJ IDEA?如何在 IntelliJ IDEA 中为 rust 项目指定 LD_LIBRARY_PATH?
【发布时间】:2019-06-20 20:34:59
【问题描述】:

我正在使用 IntelliJ IDEA 来试验 rust。为了了解如何调用用其他语言创建的库,我用 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中指定。

【问题讨论】:

  • This好像和cargo部分有关。

标签: intellij-idea rust


【解决方案1】:

可以使用 build.rs 文件指定 rust 的额外链接参数,该文件通常位于 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。

输出中 cargo 使用的设置记录在 rust 文档的 Build Scripts 部分。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多