2015-12-04 17 views
2

我正在Rust中構建二進制可執行文件,它需要鏈接到本機庫,如foo.afoo.a包含一個符號void bar(void),我想將它作爲一個回調函數公開給動態鏈接器,該函數可以在dlopen風格的動態加載庫中被函數調用。在鏈接到Rust中的本機庫時向動態鏈接程序公開符號

如果我們使用C來源,可以通過提供-rdynamic來完成ld

gcc -rdynamic -o a_dynamic main.c foo.c 

在Rust中這樣做的正確方法是什麼?我一直在使用cargo:rustc-flags=-rdynamicbuild.rs嘗試,以及

#![feature(link_args)] 
#[link_args = "-rdynamic"] 

似乎都不工作。

+0

只是一個瘋狂的猜測 - 使用貨物:rustc-flags = -C link-args = -rdynamic'。鏈接器的參數通過rustc中的'-C link-args'選項傳遞。 –

+0

@VladimirMatveev試了一下。沒有運氣。 – WiSaGaN

回答

1

截至今天,Rust工具鏈不鼓勵將任意標誌傳遞給鏈接器。我們可以做的最接近的方式是使用cargo rustc並手動添加鏈接參數。

cargo rustc -- -C link-args='-rdynamic'