9.2 armlink での ld スクリプトの一般的な使用事例

以下に、armlink での ld スクリプトの一般的な使用事例を示します。

ライブラリのラップ
一部のライブラリには、動的な部分と静的な部分があります。ld スクリプトでは、INPUT コマンドで指定されたとおりの順序で両方のライブラリをロードします。以下に例を示します。
INPUT(libstatic.a)
INPUT(libdynamic.so)
このスクリプトでは、libstatic.a の後に libdynamic.so をロードするようにリンカに指示しています。
--ldpartial オプションを使用した部分リンク
ld スクリプトを指定して、リンカによるセクションの結合方法を制御できます。以下に例を示します。
SECTIONS
{
    .text :0
    {
        *(.text)
        *(mysection)
    }
}
このスクリプトでは、mysection とすべての .text セクションを 1 つの .text 出力セクションに統合するようにリンカに指示しています。
ARM Linux のリンクの細かい制御
デフォルトのリンカスクリプトで指定されている順序とは異なる順序でセクションを結合することが必要になる場合があります。また、リンカで特定のアドレスにシンボルを定義することが必要になる場合もあります。こうした情報は、ユーザ定義のリンカスクリプトで指定できます。

ARM Linux 上で実行できるファイルを正常に生成するには、ダイナミックローダがファイルをロードするのに使用できるメタデータを格納する出力セクションをイメージに含める必要があります。最初はいずれかのサンプルスクリプトを元に、それを目的に合わせて変更することを推奨します。
関連する概念
9.7 ARM Linux 実行可能ファイルをリンクするための GNU ld スクリプトの例
9.8 ARM Linux 共有オブジェクトをリンクするための GNU ld スクリプトの例
9.9 部分オブジェクトをリンクするための GNU ld スクリプトの例
関連する参考文書
12.81 --ldpartial
12.87 --linker_script=ld_script
12.150 --sysroot=path
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.