便宜上、関連するマニュアルページを以下に追加しました。
まず私の(誤った)理解:オプションを で区切る必要がある場合,
、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,.
.