Как вы указываете LD_LIBRARY_PATH для проекта ржавчины в IntelliJ IDEA? - PullRequest
1 голос
/ 19 июня 2019

Я использую 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 Ответ

1 голос
/ 20 июня 2019

Дополнительные аргументы ссылки для rust могут быть указаны с помощью файла 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, потому что не каждая система будет работать с java 1.8.0.202, установленной в /opt.

Настройки, используемые грузом из вывода, описаны в разделе Сценарии сборки в документации по ржавчине.

Это только позволяет приложению связываться. Чтобы включить его, вы должны изменить конфигурацию запуска IntelliJ, установив переменную среды следующим образом:

setting environment variables for a run configuration

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...