与 Rust 中的本机库链接时将符号公开给动态链接器
Expose symbols to dynamic linker when linking with native library in Rust
我正在用 Rust 构建一个二进制可执行文件,它需要 link 到本地库,比如 foo.a
。 foo.a
包含一个符号 void bar(void)
,我想将其作为回调函数公开给动态 linker,可以由 dlopen
样式动态加载的函数调用图书馆。
如果我们使用 C
来源,这可以通过提供 -rdynamic
在 ld
中完成。
gcc -rdynamic -o a_dynamic main.c foo.c
在 Rust 中执行此操作的正确方法是什么?我试过在 build.rs
中使用 cargo:rustc-flags=-rdynamic
,以及
#![feature(link_args)]
#[link_args = "-rdynamic"]
似乎都不起作用。
截至今天,Rust 工具链不鼓励将任意标志传递给链接器。我们最接近的正确方法是使用 cargo rustc
并手动添加链接参数。
cargo rustc -- -C link-args='-rdynamic'
我正在用 Rust 构建一个二进制可执行文件,它需要 link 到本地库,比如 foo.a
。 foo.a
包含一个符号 void bar(void)
,我想将其作为回调函数公开给动态 linker,可以由 dlopen
样式动态加载的函数调用图书馆。
如果我们使用 C
来源,这可以通过提供 -rdynamic
在 ld
中完成。
gcc -rdynamic -o a_dynamic main.c foo.c
在 Rust 中执行此操作的正确方法是什么?我试过在 build.rs
中使用 cargo:rustc-flags=-rdynamic
,以及
#![feature(link_args)]
#[link_args = "-rdynamic"]
似乎都不起作用。
截至今天,Rust 工具链不鼓励将任意标志传递给链接器。我们最接近的正确方法是使用 cargo rustc
并手动添加链接参数。
cargo rustc -- -C link-args='-rdynamic'