我正在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"]
似乎都没有效果。
答案 0 :(得分:2)
截至今天,Rust工具链不鼓励将任意标志传递给链接器。我们可以做的最接近的方法是使用cargo rustc
并手动添加链接参数。
cargo rustc -- -C link-args='-rdynamic'