Я создаю двоичный исполняемый файл на Rust, и ему нужно связать нативную библиотеку, скажем, foo.a
. foo.a
содержит символ void bar(void)
, который я хотел бы предоставить динамическому компоновщику в качестве функции обратного вызова, которую можно вызывать из функций в динамически загружаемой библиотеке в стиле dlopen
.
Это можно сделать в ld
, предоставив -rdynamic
, если мы используем источник C
.
gcc -rdynamic -o a_dynamic main.c foo.c
Как правильно это сделать в Rust? Я пробовал использовать cargo:rustc-flags=-rdynamic
в build.rs
, а также
#![feature(link_args)]
#[link_args = "-rdynamic"]
Ни то, ни другое не работает.
cargo:rustc-flags=-C link-args=-rdynamic
. Аргументы компоновщику передаются через опцию-C link-args
в rustc. - person Vladimir Matveev   schedule 04.12.2015