1. ホーム
  2. gcc

[解決済み] rpathと-Lの違いは何ですか?

2022-12-16 18:33:54

質問

gcc そして ld は、ライブラリの検索パスを指定するための多くの方法を提供しますが、その中でも -rpath-L フラグがあります。この 2 つのフラグに違いはなく、それぞれのフラグがライブラリの検索パスに 追加されることを事実上示しています。しかし、両方のフラグが まさに を行うのは不思議です。これら 2 つのオプションに違いがあるとすれば、それは何でしょうか?

どのように解決するのですか?

古いマニュアルを読んでいるのでしょう (強調)。

-rpath=dir

      ディレクトリを追加して ランタイム ライブラリの検索パスに追加します。 これは

      共有オブジェクトを含む ELF 実行ファイルをリンクする際に使用されます。 すべて -rpath

      の引数は連結され ランタイム リンカに渡され、リンカは

      での共有オブジェクトの位置を特定するために使用します。 ランタイムで共有オブジェクトの位置を特定します。

vs.

-L searchdir

--ライブラリパス=searchdir

      が指定するパスのリストにパスsearchdirを追加します。 ld が検索するパスのリストに追加します。

      アーカイブライブラリと ld 制御スクリプトを検索します。

では -L 伝える ld は、リンク時にリンクするライブラリを探す場所を指定します。これは(例えば)ビルドツリーにあるライブラリに対してビルドするときに使用します。 make install . --rpath は、ランタイムのダイナミックリンカーがライブラリを見つけられるように、実行ファイル内にそのパスを保存します。これは、ライブラリがシステムライブラリ検索パスの外側にある場合に使用します。