Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
19
Help us understand the problem. What is going on with this article?
@kjunichi

Cargoで任意の共有ライブラリをリンクするには

More than 1 year has passed since last update.

背景

#[link(name = "raiburari")]
extern {
   fn foo(script: *const libc::c_char,
                        cb: extern fn(* const libc::c_char) -> c_int ) }

rustcのコマンドラインでは-Lオプションがあるので、Cと同様に共有ライブラリの
パスを指定することが可能。コード中で指定したlibraiburariがどこにあっても参照できる。

しかし、Cargoを使ってこれをするやり方がなかなか分からなかった。

驚きの結果

なんと、build.rsをいうファイルを作成して、rustで標準出力にオプションの
文字列を出力するコードを書くことで、これが可能になることが分かった。

共有ライブラリの検索パスは以下のオプション

cargo:rustc-link-search

build.rsの中身

fn main() {
    println!("cargo:rustc-link-search=native=/hoge/fuga/bar/foo");
}

これで、/hoge/fuga/bar/foo配下の共有ライブラリを参照するようになる。

参考資料

この事を学んだ結果の成果物

関連投稿

関連記事

19
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kjunichi
WebRubyがきっかけで、mrubyで実装されたhttp2サーバーのtrusterdに絡んだ事をやってみたり、ElectronのIssue眺めたり、手元で動かしたり、node.js関連。WASMも少々。投稿する記事の内容は個人の意見であり、所属する企業の見解を代表するものではありません。
japan-systems
「2019年に50周年を迎えたIT企業です。最先端の技術により全国の企業、官公庁、自治体に多くの実績があります。」

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
19
Help us understand the problem. What is going on with this article?