「g++ のリンカー」などというものはなく、システム独自のリンカーを使用します。
GCC からリンカーにオプションを渡すには、GCC の-Wl,
または-Xlinker
オプションを使用する必要があります。
-Xlinker option
option
オプションとしてリンカーに
渡します。これを使用して、GCC が認識できないシステム固有のリンカー オプションを提供できます。
別の引数をとるオプションを渡したい場合は-Xlinker
、オプション用に 1 回、引数用に 1 回、合計 2 回使用する必要があります。たとえば、 を渡す-assert definitions
には、 と書く必要があります-Xlinker -assert -Xlinker definitions
。-Xlinker "-assert definitions"
これは文字列全体を単一の引数として渡しますが、これはリンカが期待するものではないため、write は機能しません。
GNU リンカを使用する場合、通常、構文を使用してリンカ オプションに引数を渡す方option=value
が、個別の引数として渡すよりも便利です。たとえば-Xlinker -Map=output.map
、-Xlinker -Map -Xlinker output.map
. 他のリンカーは、コマンド ライン オプションのこの構文をサポートしていない場合があります。
-Wl,option
option
オプションとしてリンカーに
渡します。カンマを含む場合option
、カンマで複数のオプションに分割されます。この構文を使用して、オプションに引数を渡すことができます。たとえば、リンカーに-Wl,-Map,output.map
渡します。-Map output.map
GNU リンカーを使用する場合は、 を使用しても同じ効果が得られ-Wl,-Map=output.map
ます。
だからあなたは使いたいと思うでしょう
-Xlinker -z -Xlinker multidefs
また
-Wl,-z,multidefs
しかし、引用したドキュメントには-b svr4
、そのオプションを使用するためにも使用する必要があると書かれています。
-Wl,-b,svr4,-z,multidefs
編集:あなたのコメントから、ダーウィン リンカーを使用する Mac OS X を使用していることがわかります。そのマニュアル ページには、対応するオプションが廃止されていることが示されています。
-m
複数の定義をエラーとして扱わないでください。これはサポートされなくなりました。このオプションは廃止されました。