わかりません -Wl、-rpath -Wl、質問する

わかりません -Wl、-rpath -Wl、質問する

便宜上、関連するマニュアルページを以下に追加しました。

まず私の(誤った)理解:オプションを で区切る必要がある場合,、2 番目-Wlは の前にあるため別のオプションではなく、オプション,の引数であることを意味します-rpath

-rpathどうして議論できるのか理解できません-Wl,.!

私の考えでは、次のようになります。

-Wl,-rpath .

-rpathこれにより、現在のディレクトリ引数を使用してリンカー オプションが呼び出されます。


gcc を実行します:

-Wl、オプション

オプションをリンカーにオプションとして渡します。オプションにカンマが含まれている場合、カンマで複数のオプションに分割されます。この構文を使用して、オプションに引数を渡すことができます。たとえば、はリンカーに-Wl,-Map,output.map渡されます-Map output.map。GNU リンカーを使用する場合は、`-Wl,-Map=output.map' でも同じ効果が得られます。

男ld:

-rpath=ディレクトリ

ランタイム ライブラリ検索パスにディレクトリを追加します。これは、ELF 実行可能ファイルを共有オブジェクトにリンクするときに使用されます。すべての -rpath 引数は連結されてランタイム リンカーに渡され、ランタイム リンカーはそれらを使用して実行時に共有オブジェクトを検索します。-rpath オプションは、リンクに明示的に含まれる共有オブジェクトに必要な共有オブジェクトを検索するときにも使用されます。

ベストアンサー1

gcc-Wl,xxxのオプションは、コンマで区切られたトークンのリストをスペースで区切られた引数のリストとしてリンカーに渡します。つまり、

gcc -Wl,aaa,bbb,ccc

最終的にはリンカー呼び出しになる

ld aaa bbb ccc

あなたの場合、 " " と言いたいld -rpath .ので、これを gcc に渡します。-Wl,-rpath,.あるいは、 の繰り返しインスタンスを指定することもできます-Wl

gcc -Wl,aaa -Wl,bbb -Wl,ccc

aaaと 2 番目の の間にはコンマがないことに注意してください-Wl

あるいは、あなたの場合は、-Wl,-rpath -Wl,..

おすすめ記事