一部のセクションの配置を指定したい。ld 2.20.0
次のアプローチが機能します。
整列する必要があるセクションのみを含むリンカー スクリプトを作成します。たとえば、次のようになります。
SECTIONS { .data ALIGN(0x40): { *(.data) } .text ALIGN(0x40): { *(.text) } .plt ALIGN(0x10): { *(.plt) } }
次にリンクします:
-rpath-link=/path/to/LinkerScript.ld /path/to/LinkerScript.ld
たとえば、スクリプトを rpath-link に含め、それをオブジェクト ファイルの 1 つとして渡します。
を使用して同じ方法でリンクするとgold 2.23.1
、スクリプトは次のエラーで拒否されます。
LinkerScript.ld: SECTIONS seen after other input files; try -T/--script
そのため、金は完全なリンカー スクリプトを指定することを望んでいますが、いくつかの属性のみを変更したいと考えています。これは可能ですか?
私はすでに試しました:
- オプションでスクリプトを渡し
-T
ます。これにより、起動に失敗する壊れた実行可能ファイルが生成されます。私が理解しているように、これは-T
完全なリンカースクリプトのみを受け入れるためですが、上記は既存のスクリプトへの単なる「注釈」です。 -T
同様に、オプションを指定してスクリプトを渡すと、ld 2.20.0
一部のセクションが指定されていないため、リンクに失敗します。これは、私のユース ケースの「完全な」リンカー スクリプトではありません。- そこで、完全なリンカー スクリプトを取得しようとしました。
ld --verbose
デフォルトのリンカ スクリプトを出力します。によって認識されなかったいくつかのシンボルを削除する必要がありましたgold
。その後、オプションで生成された実行可能ファイル-T/path/to/LinkerScript.ld
は機能しなくなりました。 - 残念ながら
gold
、デフォルトのリンカー スクリプトを表示するオプションはありません (何も使用しません)。 - マニュアル ページでは、上記の場合の配置をパラメータで変更する方法を指定していません。
どんな助けでも大歓迎です!